LEFT JOIN 不返回 NULL

LEFT JOIN not returning NULL

我想问题归结为:在哪些极端情况下使用 LEFT OUTER JOIN 并没有 return 预期的值?因为在结果集中我期待我加入的字段(itemID)+ 行不匹配的任何 NULL 值,但是 itemID 不要出现

信息:

qry_HersheySAPMaxDate2 returns 95 行。

qry_HersheySAPMaxDate2 可以为 MaxOfMaxOfjob_DateSumOfSumOfqty_on_handproduct_codewhse IDitem 将始终有一个值。

qry_HersheySAPMaxDate3 returns 85 行。

qry_HersheySAPMaxDate3 在任何字段中都没有任何 NULL 值,但不包括 10 iditem 行。

查询:

SELECT 
qry_HersheySAPMaxDate3.ID, 
qry_HersheySAPMaxDate3.item, 
qry_HersheySAPMaxDate3.MaxOfMaxOfjob_date, qry_HersheySAPMaxDate3.SumOfSumOfqty_on_hand, qry_HersheySAPMaxDate3.product_code, 
qry_HersheySAPMaxDate3.whse, 
qry_HersheySAPMaxDate3.jobnumber

FROM 
qry_HersheySAPMaxDate2 
LEFT JOIN qry_HersheySAPMaxDate3 ON (qry_HersheySAPMaxDate2.item = qry_HersheySAPMaxDate3.item) AND (qry_HersheySAPMaxDate2.ID = qry_HersheySAPMaxDate3.ID);

使用我的查询的结果集 + 一个答案中的建议改为使用 LEFT OUTER JOIN:

Screenshot

如果您希望 NULL 值包含在结果中,您应该使用 LEFT OUTER JOIN

您抱怨您的查询生成了完全空白的行。让我们看看为什么:

您将 qry3 外部连接到 qry2。这意味着当 qry3 中的 qry2 记录没有匹配项时,将连接所有列都设置为空的伪 qry3 记录。

在您的查询中,您 select 只有来自 qry3 的字段,因此在外连接情况下它们都是空的。 Select qry2.ID 和 qry2.item 而不是 qry3.ID 和 qry3.item 以查看不匹配的值:

SELECT 
  qry_HersheySAPMaxDate2.ID, 
  qry_HersheySAPMaxDate2.item,