case:多个左连接顺序

时间:2013-05-29 09:13:53

标签: sql join left-join interbase

我有一个标题表(VATLH)我需要加入多个表, 我需要将它连接到vatld,计算数据行的数量,并将其连接到vldocd以查看它是否在Doc(DOCID)中使用了标题

所以我使用2个左连接

SELECT VATLH.periode
      , vatlh.dossierID
      , vldocd.docID
      , COUNT(vatld.vatnum)
  FROM vatlh
       LEFT JOIN vatld
       LEFT JOIN vldocd ON  vldocd.dossierID = vatld.dossierID
                AND VLDOCd.PERIODE = VATLd.PERIODE
                AND vldocd.soort = 0 ON  vatld.dossierID = vatlh.dossierID
                AND vatlh.periode = vatld.periode
 GROUP BY VATLH.periode, vatlh.dossierID, vldocd.docID

但是如果vatld表中没有对应的行,那么如果结果应该是DOCID,则DOCID结果为null。添加相应的行时,DOCID具有正确的数据。

1 个答案:

答案 0 :(得分:1)

这是因为您使用vatld字段加入vldocd - 而是使用vatlh字段,如下所示:

SELECT VATLH.periode
      , vatlh.dossierID
      , vldocd.docID
      , COUNT(vatld.vatnum)
  FROM vatlh
       LEFT JOIN vatld ON  vatld.dossierID = vatlh.dossierID
                AND vatlh.periode = vatld.periode
       LEFT JOIN vldocd ON  vldocd.dossierID = vatlh.dossierID
                AND VLDOCd.PERIODE = VATLh.PERIODE
                AND vldocd.soort = 0 
 GROUP BY VATLH.periode, vatlh.dossierID, vldocd.docID