三次连接查询在同一个表中

时间:2016-11-06 12:01:28

标签: mysql

我有一个mysql表

  MENU_ID       MENU_NAME    PARENT_ONE     PARENT_TWO
  1             home         0              0
  2             home_sub     1              0
  3             third_home   1              2

我希望这个名字与父母一方相同,如果有的话,我希望每一行都有父二元组ID。  我已经尝试了一些东西,但它只给出了一个有父亲一和两个值的东西,比如

MENU_ID  MENU_NAME  PARENT_ONE   PARENT_TWO     MENU_NAME   MENU_NAME
 3        third_home    1            2              home        home_sub

但我想要

MENU_ID     MENU_NAME   PARENT_ONE  PARENT_TWO  MENU_NAME       MENU_NAME
 1          home            0       0
 2          home_sub        1       0           home
 3          third_home      1       2           home            home_sub



this the query that i tried

SELECT a.*, b.MENU_NAME, c.MENU_NAME 
FROM menu_table a JOIN menu_table b ON a.PARENT_ONE = b.MENU_ID 
JOIN menu_table c ON a.PARENT_TWO = c.MENU_ID ORDER BY a.MENU_ID;

如果有人能帮助我的话,请高级谢谢!

1 个答案:

答案 0 :(得分:1)

您应该使用左连接(连接是内部连接的别名)

SELECT a.*, b.MENU_NAME, c.MENU_NAME 
FROM menu_table a 
LEFT JOIN menu_table b ON a.PARENT_ONE = b.MENU_ID 
LEFT JOIN menu_table c ON a.PARENT_TWO = c.MENU_ID 
ORDER BY a.MENU_ID;