我想将这些查询合并为一个,使用union all,我该怎么做?
$query = ("SELECT menu_id, menu_friendlyName
FROM menu
WHERE back = 1 AND active = 1")
$query = ("SELECT menu_id, submenu_id, submenu_name, url
FROM submenu
WHERE active = 1");
答案 0 :(得分:0)
例如这样:
$query =
"select * from (
SELECT
menu_id,
menu_friendlyName,
NULL as submenu_id,
NULL as url,
FROM menu
WHERE back = 1 AND active = 1
union all
SELECT
menu_id,
NULL as menu_friendlyName,
submenu_id,
submenu_name,
url,
FROM submenu
WHERE active = 1) x"
);
否则正如其他人提到的那样,联盟并不是一个好主意。
答案 1 :(得分:0)
如果要选择具有相应子菜单条目的菜单条目,则必须使用 JOIN 。我会使用 LEFT JOIN :
SELECT m.menu_id, m.menu_friendlyName, s.submenu_id, s.submenu_name, s.url
FROM menu AS m
LEFT JOIN submenu AS s
ON s.menu_id = m.menu_id
WHERE
m.back = 1
AND m.active = 1
AND s.active = 1
如果使用 JOIN ,查询将返回菜单项,其中至少有一个子菜单项。如果您使用 LEFT JOIN ,它还会返回没有任何子菜单条目的菜单条目。