用于连接具有条件的三个表的SQL查询

时间:2018-05-05 19:44:08

标签: sql left-join inner-join

我有三张桌子:车辆,地址,地址。我有两个任务,

  1. 我必须根据车辆表中的一个日期列找到地址角色表中的记录数。我可以使用车辆和地址表之间的内部联接来获得预期的结果。

  2. 根据以上结果,我必须找到addressrole表中的记录,这些记录在地址表中不可用。这是我正在使用的查询:

  3. SELECT addressrole.*,
           address.*
    FROM addressrole
      LEFT JOIN address ON addressrole.ID = address.FK_ADDRESSROLE_ID
      INNER JOIN vehicle
              ON vehicle.ID = addressrole.FK_EVN_ID
             AND creationdate > '2018-03-01'
    

    以上查询根据来自vehicle和addressrole表的内部联接,得到地址和地址表中的所有记录。

    有没有办法只根据以下内连接从addressrole表中获取不匹配的记录?

1 个答案:

答案 0 :(得分:1)

这是你想要的吗?

SELECT ar.*, a.*
FROM addressrole ar INNER JOIN
     vehicle v
     ON vehicle.ID = ar.FK_EVN_ID AND
        ?.creationdate > '2018-03-01' LEFT JOIN
     address a
     ON ar.ID = a.FK_ADDRESSROLE_ID 
WHERE a.FK_ADDRESSROLE_ID IS NULL;