0
我想寫一個查詢,涉及3個表格,並將其中兩個連接到主要的一個。訪問左連接不工作,因爲我想象它
SELECT UNIT_MAIN.UNIT_NO, DEPT_MAIN.LEV_2, Card.CardNumberLong AS [Some
Number], Card.Enabled, F_CARD.CARD_NO, F_CARD.END_DT
FROM (((UNIT_MAIN
INNER JOIN DEPT_MAIN ON UNIT_MAIN.USING_DEPT = DEPT_MAIN.DEPT_ID)
LEFT JOIN Card ON (UNIT_MAIN.UNIT_NO = Card.UnitCode AND Card.Enabled = True))
LEFT JOIN F_CARD ON (UNIT_MAIN.UNIT_ID = F_CARD.ASSIGNED_ID AND (F_CARD.END_DT) Is Null ))
WHERE (((UNIT_MAIN.STATUS)="A") AND ((DEPT_MAIN.LEV_2)="AM") AND ((Card.Enabled)=True))
OR (((UNIT_MAIN.STATUS)="D") AND ((DEPT_MAIN.LEV_2)="AM") AND ((Card.Enabled)=True))
我遇到的問題是,當F_CARD表有行,其中的F_CARD.END_DT不爲空,導致主表(單位表)不露面,即使它是一個左連接和F_CARD錶行不滿足連接條件(或我相信)。
我在F_CARD表上沒有任何where子句,它們只在連接條件中。
編輯 當我執行
LEFT JOIN MFIVE_F_CARD ON (MFIVE_UNIT_DEPT_COMP_MAIN.UNIT_ID = MFIVE_F_CARD.ASSIGNED_ID AND ((MFIVE_F_CARD.END_DT) Is Null)
如果F_CARD表載有有一個END_DT行的單元不出現,我相信,因爲左連接條件不合格,內表(單位表)應該出現不管。
如果我從查詢中刪除任何與F_CARD相關的值,則顯示我正在查找的缺失單位。它是內連接,左連接,左連接。當發生第二次左連接時,即使它們出現,我也會丟失行。
我縮小了連接範圍,只用F_CARD做了左邊的內部操作。嘗試查看爲什麼它不返回連接失敗的行。
試着做以下,但即時得到一個不支持加入錯誤...
SELECT
UNIT_MAIN.UNIT_NO
,DEPT_MAIN.LEV_2
,Card.CardNumberLong AS [SomeNumber]
,Card.Enabled
,F_CARD.CARD_NO
,F_CARD.END_DT FROM
(
(
(
UNIT_MAIN
INNER JOIN DEPT_MAIN
ON UNIT_MAIN.USING_DEPT = DEPT_MAIN.DEPT_ID
)
LEFT JOIN Card
ON (UNIT_MAIN.UNIT_NO = Card.UnitCode AND Card.Enabled = True)
)
LEFT JOIN F_CARD
ON (UNIT_MAIN.UNIT_ID = F_CARD.ASSIGNED_ID AND F_CARD.END_DT Is Null)
) WHERE
(UNIT_MAIN.STATUS = "A" OR UNIT_MAIN.STATUS = "D")
AND DEPT_MAIN.LEV_2 = "AM"
感謝。
這裏的問題是,Card.Enabled和F_CARD.END_DT是NULL不屬於「Where」條件,除非我指定所有可能性。 – user2859406