简体   繁体   English

PHP-如何在这两个查询上全部使用UNION

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM