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