0
首先查詢比預期的查詢:JOIN與WHERE子句返回較少的結果在MS Access
SELECT
TAB1.[CDNO], TAB1.[IDTNO],
IIF(ISNULL([TAB1.ECONIV3]), [TAB1.ECONIV2], 'none') AS [CONTRIB]
FROM
TAB1
WHERE
(TAB1.[UNNN] <> "WATER" AND TAB1.[CCCCPP] <> "SALT")
;
第二個查詢:
SELECT
TAB1.[CDNO], TAB1.[IDTNO], IIF(ISNULL([TAB1.ECONIV3]), [TAB1.ECONIV2], 'none') AS [CONTRIB]
, IIF(ISNULL([TAB2.ENTCOM3]), [TAB1.ENTCOM2],'none') AS [CONCOM] , IIF(ISNULL([TAB2.ENTSTI3]), [TAB1.ENTSTI2],'none') AS [CONSTI]
FROM
TAB1
LEFT OUTER JOIN TAB2
ON (TAB1.[IDTNO] = TAB2.[PTDINO] AND (IIF(ISNULL([TAB1.ECONIV3]), [TAB1.ECONIV2], 'none') = IIF(ISNULL([TAB2.ENTSTI3]), [TAB1.ENTSTI2],'none'))
WHERE (TAB1.[UNNN] <> "WATER" AND TAB1.[CCCCPP] <> "SALT")
;
TAB1是具有TAB2行的8倍。 第二個查詢出現錯誤,它返回的行少於第一個查詢。 所以我的問題是在第二個查詢中,我試圖使TAB1的選定列的所有行與 TAB2的兩列與2 OUTER JOIN條件匹配。
偶數的括號在第二個查詢中打開和關閉,所以可能還有別的東西? – Zachs
是的,必須是別的東西,但該查詢中沒有任何東西可能會導致從右表中排除,無論如何還有第一個查詢的額外排除,因爲where子句引用右表的查詢是相同的。 – Randall