sql - 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
注意其他数据已被删除,因为当我加入第四张图时,一些结果为空
解决方案
你似乎想要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_id
和agent_income
来自第一个表。如果它们位于其中一个层次结构表中,则条件应放在适当的ON
子句中。
推荐阅读
- c++ - 检查子类是否执行了方法覆盖
- javascript - Fabric.js 对象在选择后跳到右下角——我该如何防止它?
- android - 无法解析 Android 应用程序模块的 Gradle 配置
- java - JTextArea 的搜索框
- oracle - 所有数字的 Oracle APEX 格式掩码
- c# - 将元素的宽度绑定到另一个元素宽度的百分比
- tensorflow - 如何构建多层双向 RNN?
- javascript - ReactJs:从字体更改方法调用时 fontSize 不会更改
- javascript - Javascript代码将名字和姓氏与全名字符串输入分开
- python - 没有反向匹配错误:找不到我传入的 slug 或主键