[英]PHP - How can i use UNION all on those two queries
I want to merge those queries in one, using union all, how can i do that? 我想将这些查询合并为一个,使用全部合并,我该怎么做?
$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");
For example this way: 例如这种方式:
$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"
);
Otherwise as others mentioned the union doesn't really look a good idea. 否则,就像其他人提到的那样,工会并不是一个好主意。
If you want to select menu entries with corresponding submenu entries you have to use JOIN instead. 如果要选择带有相应子菜单项的菜单项,则必须改用JOIN 。 I would use LEFT JOIN for this: 我将为此使用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
If you use JOIN , the query returns menu entries, which have at least one submenu entry. 如果使用JOIN ,则查询返回菜单项,该菜单项至少具有一个子菜单项。 If you use LEFT JOIN , it returns also menu entries without any submenu entry. 如果您使用LEFT JOIN ,它还会返回菜单条目,而不包含任何子菜单条目。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.