首页 > 解决方案 > SQL 多重连接

问题描述

我正在尝试加入两个表,同时通过使用内连接获取某个列的值,我尝试加入到第三张图,但是当涉及到第四张图时,它不显示空值,如何我可以显示第 4 列的值,即使是空值

这是SQL的代码

betl.user_id,
betl.agent_id,
ah1.parent_id,
ah2.user_id, 
ah3.user_id AS parent_of_agent
       FROM
       wpc16_02.bets_logs betl
          INNER JOIN
          wpc16_02.agent_heirarchy ah1 ON betl.agent_id = ah1.user_id
          INNER JOIN
          wpc16_02.agent_heirarchy ah2 ON ah1.parent_id = ah2.id
          INNER JOIN
          wpc16_02.agent_heirarchy ah3 ON ah2.parent_id = ah3.id
       WHERE
           fight_id = 1930 AND agent_income = 0

这是我试图通过使用内部连接来实现的目标:

这是我尝试加入第三张图时得到的结果:

user_id | agent_id  | parent_id | user_id_of_parent
15012   | 2212      | 96        |  160
227097  | 22061     | 266       |  64
465174  | 464899    | 126       |  211
505094  | 504767    | 980       |  5358
241158  | 8281      | 18        |  67
463344  | 462715    | 751       |  3420
184396  | 29870     | 502       |  2123
486847  | 43225     | 164       |  234
482120  | 482023    | 4430      |  46469
369628  | 217212    | 8283      |  109697

加入第 4 个图表时:

 user_id | agent_id  | parent_id | user_id_of_parent | master_uid
 184396  | 29870     | 502       | 2123              |  160
 482120  | 482023    | 4430      | 46469             |  699
 369628  | 217212    | 8283      | 109697            |  71
 97287   | 93996     | 7332      | 93866             |  3114
 113287  | 113228    | 2714      | 20652             |  4050
 366287  | 361918    | 17603     | 235880            |  234
 439935  | 236147    | 3776      | 40054             |  103
 480201  | 436936    | 1041      | 5761              |  160
 456400  | 456248    | 32901     | 431900            |  240
 502877  | 497592    | 2571      | 20845             |  3918

注意其他数据已被删除,因为当我加入第四张图时,一些结果为空

标签: sqljoininner-join

解决方案


你似乎想要LEFT JOIN。有点不清楚确切的查询是什么,因为您的问题没有诸如哪些列在哪些表中之类的信息。

但想法是:

SELECT . . .
FROM wpc16_02.bets_logs betl LEFT JOIN
     wpc16_02.agent_heirarchy ah1
     ON betl.agent_id = ah1.user_id LEFT JOIN
     wpc16_02.agent_heirarchy ah2
     ON ah1.parent_id = ah2.id LEFT JOIN
     wpc16_02.agent_heirarchy ah3
     ON ah2.parent_id = ah3.id
WHERE betl.fight_id = 1930 AND betl.agent_income = 0

这假设flight_idagent_income来自第一个表。如果它们位于其中一个层次结构表中,则条件应放在适当的ON子句中。


推荐阅读