我有一个带有简单连接的核心查询,效果很好:
SELECT
TableA.JobType,
TableA.AssignedTech,
TableB.EmpNumber,
TableB.EmpFirstName,
FROM
TableA, TableB
WHERE
TableA.AssignedTech=TableB.EmpNumber
我需要联接第三张表才能访问第三张表中的字段。
SELECT
TableA.JobType,
TableA.AssignedTech,
TableB.EmpNumber,
TableB.EmpFirstName,
images.image
FROM
TableA, TableB, images
WHERE
TableA.AssignedTech=TableB.EmpNumber
AND
TableA.AssignedTech=images.empno
这很好,除非没有以下关系:“ TableA.AssignedTech = images.empno”,此时不返回记录。
我需要显示核心查询中的所有记录,并在可用的情况下附加images.empno。
答案 0 :(得分:1)
您需要使用左联接,如下所示。现在,我已经用左联接将两个表联接在一起,但是如果TableA和TableB之间始终有匹配的数据,则可以在TableA和TableB之间进行内部联接。但是无论如何,您似乎总是需要对表图像使用左连接
SELECT
TableA.JobType,
TableA.AssignedTech,
TableB.EmpNumber,
TableB.EmpFirstName,
images.image
FROM
TableA
Left join TableB
On TableA.AssignedTech=TableB.EmpNumber
Left join images
On
TableA.AssignedTech=images.empno
答案 1 :(得分:1)
您应该使用显式连接,因此第一个表的第一个连接是INNER JOIN,您需要左连接
SELECT
TableA.JobType,
TableA.AssignedTech,
TableB.EmpNumber,
TableB.EmpFirstName,
images.image
FROM TableA
INNER JOIN TableB ON
LEFT JOINN images ON TableA.AssignedTech=images.empno
答案 2 :(得分:1)
剩下的是什么?来自documentation:
如果在LEFT JOIN的ON或USING部分中没有与右表匹配的行,则将所有列都设置为NULL的行用于右表。
您的查询将是:
SELECT
TableA.JobType,
TableA.AssignedTech,
TableB.EmpNumber,
TableB.EmpFirstName,
images.image
FROM
TableA
JOIN TableB ON TableA.AssignedTech=TableB.EmpNumber
LEFT JOIN images ON TableA.AssignedTech=images.empno