正确使用外部左连接

时间:2018-08-04 11:15:58

标签: join

我想从MillInvoice表中返回所有记录,无论PriceIncrease表中是否有相应的记录。当我在下面运行查询时,我只会在MillInvoice表中获得具有相应的PriceIncrease记录的记录。

SELECT MILLInvoices.*,
       PriceIncrease.PriceIncreaseId,
       PriceIncrease.PriceForecasted,
       PriceIncrease.DateForecasted 
FROM MILLInvoices MILLInvoices
     LEFT OUTER JOIN PriceIncrease PriceIncrease
         ON MILLInvoices.MillCode = PriceIncrease.Plant
            AND MILLInvoices.ParentNumber = PriceIncrease.Mapa8
            AND MILLInvoices.Segment = PriceIncrease.GradeSegment
            AND MILLInvoices.City = PriceIncrease.City
            AND MILLInvoices.State = PriceIncrease.State
            AND MILLInvoices.Zip = PriceIncrease.ZipCode

1 个答案:

答案 0 :(得分:0)

我不确定表或数据模型的外观如何,但是根据您的问题,我猜测您要在此处进行的操作是包含MILLInvoices中的记录,而{{ 1}}存在。在这种情况下,结果将在从表PriceIncrease中检索到的列下具有空字段。在进入PriceIncrease部分之前,查询可能正在做您想要的事情。 WHERE部分几乎排除了结果中的任何记录,其中PriceIncrease中的列具有空值或不符合WHERE语句条件的值。如果希望所有WHERE都出现在结果中,请尝试删除最后的WHERE部分。

如果您想要符合条件的行以及MILLInvoices中没有相应记录的行,请尝试以下操作:

PriceIncrease