我正在尝试从相关表中获取组件的名称及其状态,但是当一个组件没有状态时,我不会得到该名称。我的数据:
table a
-------
pkey
component_name
table b
-------
pkey
foreign_key
status
userid
我的查询:
SELECT a.component_name, b.status FROM a LEFT JOIN b ON a.pkey=b.foreign_key WHERE a.pkey=1 AND b.userid=5
我将为a.pkey设置多个值,因此理想情况下,我想执行以下操作以一次获取所有结果:
SELECT a.component_name, b.status FROM a LEFT JOIN b ON a.pkey=b.foreign_key WHERE a.pkey IN (1,2,3) AND b.userid=5
运行这些命令,我只会在两个表中的记录匹配时才得到结果,但是即使没有状态,我也想获取component_name。我该怎么做?
谢谢!
好的...一些示例数据:
table a
-------
1,course 1
2,course 2
3,course 3
4,course 4
table b
---------
1, 1, completed, 11
2, 2, completed, 11
3,1, cancelled, 10
4,4,completed,11
用户ID为11的预期结果:
course 1,completed
course 2, completed
course 3, NULL
course 4, completed
答案 0 :(得分:1)
在以下情况下,您不应使用左连接的参与表列 将这些条件移到相关表的on子句中
SELECT a.component_name, b.status
FROM a
LEFT JOIN b ON a.pkey=b.foreign_key AND b.userid=5
WHERE a.pkey=1
SELECT a.component_name, b.status
FROM a
LEFT JOIN b ON a.pkey=b.foreign_key AND b.userid=5
WHERE a.pkey IN (1,2,3)