我有一個工作選擇在頁面的底部。正如你所看到的,它有53行,在我看來,這太多了。我被告知我在MySQL中有一個'如果'條件可用,但我無法使它工作。工作選擇聯盟4選擇,因爲在每個選擇,我需要加入另一個表。根據內容可以連接表嗎?MySQL如果條件然後離開加入
SELECT *
FROM (
SELECT m.`identificator` , ml.id AS link_id, ml.parent, ml.type,
ml.destination, ml.disabled, ml.order, mld.`name` AS link_name,
mld.`alt` , mld.`title` , cpd.`slug`
FROM `wf_menu` m
LEFT JOIN `wf_menu_link` ml ON m.`id` = ml.`menu_id`
LEFT JOIN `wf_menu_link_desc` mld ON ml.`id` = mld.`link_id`
LEFT JOIN `wf_cms_post_desc` cpd ON ml.destination = cpd.post_id
WHERE mld.`lang_id` =1
AND mld.`lang_id` = cpd.`lang_id`
AND (ml.`type` = 'page'
OR ml.`type` = 'article')
UNION
SELECT m.`identificator` , ml.id AS link_id, ml.parent, ml.type,
ml.destination, ml.disabled, ml.order, mld.`name` AS link_name,
mld.`alt` , mld.`title` , cpd.`slug`
FROM `wf_menu` m
LEFT JOIN `wf_menu_link` ml ON m.`id` = ml.`menu_id`
LEFT JOIN `wf_menu_link_desc` mld ON ml.`id` = mld.`link_id`
LEFT JOIN `wf_cms_category_desc` cpd ON ml.destination = cpd.category_id
WHERE mld.`lang_id` =1
AND mld.`lang_id` = cpd.`lang_id`
AND ml.`type` = 'cmscat'
UNION
SELECT m.`identificator` , ml.id AS link_id, ml.parent, ml.type,
ml.destination, ml.disabled, ml.order, mld.`name` AS link_name,
mld.`alt` , mld.`title` , spd.`slug`
FROM `wf_menu` m
LEFT JOIN `wf_menu_link` ml ON m.`id` = ml.`menu_id`
LEFT JOIN `wf_menu_link_desc` mld ON ml.`id` = mld.`link_id`
LEFT JOIN `wf_shop_category_desc` spd ON ml.destination = spd.category_id
WHERE mld.`lang_id` =1
AND mld.`lang_id` = spd.`lang_id`
AND ml.`type` = 'shopcat'
UNION
SELECT m.`identificator` , ml.id AS link_id, ml.parent, ml.type,
ml.destination, ml.disabled, ml.order, mld.`name` AS link_name,
mld.`alt` , mld.`title` , 'link' as slug
FROM `wf_menu` m
LEFT JOIN `wf_menu_link` ml ON m.`id` = ml.`menu_id`
LEFT JOIN `wf_menu_link_desc` mld ON ml.`id` = mld.`link_id`
WHERE mld.`lang_id` =1
AND ml.`type` = 'link'
) a
ORDER BY `order` DESC
在一個側面說明,我會建議創建它,而不是因爲它需要只是一個電話在網絡上,你可以做你需要的所有邏輯程序在程序中。 – llanato
我是否應該明白,您正在使用不同情況的UNION來補充一個NULL情況並使用替代結果?在那種情況下,選擇替代ml.type的條件是什麼? –
在ml.type = page/article的情況下,我離開加入cms_post_desc,如果是cmscat cms_category_desc,在shopcat shop_category_desc的情況下,如果ml.type = link,則意味着在目標中存在直接wroten鏈接,因此不需要左邊加入任何東西 –