0

有効なユーザーがサイト ページのコンテンツと情報を表示および編集できるサイトと相対 CMS があります。各ページには、サイト ユーザーがページを開いて表示できるメニュー ボイスが関連付けられています。ページとメニューは、それぞれ pm_sections と pm_menu テーブルに保存されます。CMS ユーザーが新しいページを挿入したい場合、関連するメニュー音声の所属を指定する必要があります。所属には 3 つのレベルがあります。

-> menu group (1)
   -> main menu voice (2), inside a menu group
      -> secondary menu voice (3), inside a main menu voice

pm_menuテーブルでは、「belonging」カラム(値: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

単一のクエリでそれを行うことが可能かどうかお尋ねします...

4

1 に答える 1