【发布时间】:2016-05-20 12:46:01
【问题描述】:
我想问题归结为:使用LEFT OUTER JOIN 不按预期返回值的极端情况是什么?因为在结果集中,我期待我加入的字段(item 和 ID)+ 行不匹配的任何 NULL 值,但 item 和 ID 不会出现。
信息:
qry_HersheySAPMaxDate2 返回 95 行。
qry_HersheySAPMaxDate2 可以为 MaxOfMaxOfjob_Date、SumOfSumOfqty_on_hand、product_code 和 whse 具有 NULL 值,而 ID 和 item 将始终具有值。
qry_HersheySAPMaxDate3 返回 85 行。
qry_HersheySAPMaxDate3 在任何字段中都没有任何 NULL 值,但不包括 10 行 id 和 item。
查询:
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 的答案之一的建议:
【问题讨论】:
-
尝试在sqlfiddle.com上设置一个独立的示例
-
最小化,添加样本表数据,当前结果和预期结果!
-
尝试颠倒查询顺序或使用
RIGHT JOIN。 -
不匹配的 qry_HersheySAPMaxDate2 行不会在 Query4 上匹配失败吗? - 哎呀不 - 抱歉,“MaxDate2”误读了“Query2”
-
您是说至少有一个项目/id 组合在 qry_HersheySAPMaxDate2 中有记录但在 qry_HersheySAPMaxDate3 中没有记录,并且显示的查询没有任何带有 NULL 的结果行?这似乎不可能。请再次检查。
标签: sql join null ms-access-2013