0
我有一個網站和一個相對的CMS,其中使用戶可以查看和編輯網站的頁面內容和信息多加入。每個頁面都與菜單語音相關聯,用戶可以通過該語音打開並查看該頁面。頁面和菜單分別存儲在pm_sections和pm_menu表中。當CMS用戶想要插入新頁面時,他必須指定相關菜單語音的所有者。有三個層次的歸屬:MySQL的 - 有相同的表和另一個表
-> menu group (1)
-> main menu voice (2), inside a menu group
-> secondary menu voice (3), inside a main menu voice
在pm_menu表,關於屬於信息被存儲在「歸屬」列(值:1,2或3)和「menu_id」列(菜單語音屬於ID)。還有另一個表pm_menu_groups,它包含主菜單組。
我的問題是:我必須參加部分和菜單表,以列出CMS頁面編輯頁面信息。我試着用UNION子句來做到這一點:
SELECT s_id, section_name, menu_name, seo_title, last_edit
FROM
((SELECT s.id AS s_id, s.name AS section_name, s.content AS content, m.belonging AS belonging, m.menu_id AS menu_id, n.name AS menu_name, s.seo_title AS seo_title, s.added_by AS author, s.modify_date AS last_edit FROM pm_sections s, pm_menu m, pm_menu n
WHERE m.section_id = s.id
AND m.link IS NULL
AND m.menu_id = n.id
AND m.belonging = 3)
UNION
(SELECT s.id AS s_id, s.name AS section_name, s.content AS content, m.belonging AS belonging, m.menu_id AS menu_id, n.name AS menu_name, s.seo_title AS seo_title, s.added_by AS author, s.modify_date AS last_edit
FROM pm_sections s, pm_menu m, pm_menu n
WHERE m.section_id = s.id
AND m.link IS NULL
AND m.menu_id = n.id
AND m.belonging = 2)
UNION
(SELECT s.id AS s_id, s.name AS section_name, s.content AS content, m.belonging AS belonging, m.menu_id AS menu_id, g.name AS menu_name, s.seo_title AS seo_title, s.added_by AS author, s.modify_date AS last_edit
FROM pm_sections s, pm_menu m, pm_menu_groups g
WHERE m.section_id = s.id
AND m.link IS NULL
AND m.menu_id = g.id
AND m.belonging = 1))
AS belongings_table
ORDER BY section_name
我會問你,如果有可能用一個單一的查詢做...
你忘了添加在FROM子句 「pm_menu_groups G」;) 不幸的是,它不工作...它加入所有pm_menu記錄:( – Andres7X 2013-04-27 14:12:53