多个子查询加入
Multiple SUbqueries into Join
SELECt rb.resource_id, re.code,rb.TYPE,
(
SELECT i18n_resourcebase.NAME
FROM i18n_resourcebase
WHERE language_id=1
AND (i18n_resourcebase.resource_id = rb.resource_id)
) nl_name,
(
SELECT i18n_resourcebase.NAME
FROM i18n_resourcebase
WHERE language_id=21
AND (i18n_resourcebase.resource_id = rb.resource_id)
) de_name,
(
SELECT i18n_resourcebase.NAME
FROM i18n_resourcebase
WHERE language_id=22
AND (i18n_resourcebase.resource_id = rb.resource_id)
) en_name
FROM resourcebase rb
JOIN resort re ON (rb.resort_id=re.resort_id)
AND re.code='RVRP'
AND rb.TYPE='accommodationtype'
AND rb.archived_from IS NULL
AND re.archived_from IS NULL;
我想用连接替换子查询;我该怎么做?
SELECt rb.resource_id, MAX(re.code),MAX(rb.TYPE),
MAX(CASE WHEN irb.language_id=1 THEN irb.NAME END) as nl_name,
MAX(CASE WHEN irb.language_id=21 THEN irb.NAME END) as de_name,
MAX(CASE WHEN irb.language_id=22 THEN irb.NAME END) as en_name
FROM resourcebase rb
JOIN resort re ON (rb.resort_id=re.resort_id)
LEFT JOIN i18n_resourcebase irb on (irb.resource_id = rb.resource_id)
AND re.code='RVRP'
AND rb.TYPE='accommodationtype'
AND rb.archived_from IS NULL
AND re.archived_from IS NULL
GROUP BY rb.resource_id;
SELECt rb.resource_id, re.code,rb.TYPE,
(
SELECT i18n_resourcebase.NAME
FROM i18n_resourcebase
WHERE language_id=1
AND (i18n_resourcebase.resource_id = rb.resource_id)
) nl_name,
(
SELECT i18n_resourcebase.NAME
FROM i18n_resourcebase
WHERE language_id=21
AND (i18n_resourcebase.resource_id = rb.resource_id)
) de_name,
(
SELECT i18n_resourcebase.NAME
FROM i18n_resourcebase
WHERE language_id=22
AND (i18n_resourcebase.resource_id = rb.resource_id)
) en_name
FROM resourcebase rb
JOIN resort re ON (rb.resort_id=re.resort_id)
AND re.code='RVRP'
AND rb.TYPE='accommodationtype'
AND rb.archived_from IS NULL
AND re.archived_from IS NULL;
我想用连接替换子查询;我该怎么做?
SELECt rb.resource_id, MAX(re.code),MAX(rb.TYPE),
MAX(CASE WHEN irb.language_id=1 THEN irb.NAME END) as nl_name,
MAX(CASE WHEN irb.language_id=21 THEN irb.NAME END) as de_name,
MAX(CASE WHEN irb.language_id=22 THEN irb.NAME END) as en_name
FROM resourcebase rb
JOIN resort re ON (rb.resort_id=re.resort_id)
LEFT JOIN i18n_resourcebase irb on (irb.resource_id = rb.resource_id)
AND re.code='RVRP'
AND rb.TYPE='accommodationtype'
AND rb.archived_from IS NULL
AND re.archived_from IS NULL
GROUP BY rb.resource_id;