我在MS Access 2010中有一个查询,它返回的行数多于源表中的行数。
我试图通过简化的示例重新创建正在发生的事情,但无法获得相同的效果。我已经设置了参数,以便包含源表中的所有记录,但只包括那些与其他表匹配的记录。
tbl_Toyota2012
有178'205条记录...查询结果返回180'365条记录。
这是我的SQL代码:
SELECT
tbl_Toyota2012.[FC-Teile-Nr], tbl_Toyota2012.BEZEICHNUNG, tbl_Toyota2012.PFC,
tbl_Toyota2012.PC, tbl_Toyota2012.WARENGRUPPE, tbl_PriceCodes.PRICE_CODE,
tbl_PriceCodes.NORMAL_FACTOR, tbl_Toyota2012.EK_NETTO_MANDANT AS EP,
tbl_Toyota2012.UPE, tbl_Toyota2012.RABATTSATZ, tbl_NWGW_Key.ZUTEILUNG,
tbl_Toyota2012.UMSATZ_2012_UNITS AS [Volumen 2012],
[tbl_Toyota2012]![UMSATZ_2012_UNITS]*[tbl_Toyota2012]![UPE]*(1-([tbl_Toyota2012]![RABATTSATZ]/100)) AS NettoUmsatz
FROM
(tbl_Toyota2012
LEFT JOIN
tbl_NWGW_Key ON (tbl_Toyota2012.PC = tbl_NWGW_Key.ProdCode) AND (tbl_Toyota2012.PFC = tbl_NWGW_Key.PFC))
LEFT JOIN
tbl_PriceCodes ON (tbl_Toyota2012.MODELL_ID = tbl_PriceCodes.MODEL_ID) AND (tbl_Toyota2012.PC = tbl_PriceCodes.PROD_CODE) AND (tbl_Toyota2012.PFC = tbl_PriceCodes.PROD_FUNC_CODE);
有人能告诉我为什么会这样吗?
答案 0 :(得分:4)
如果tbl_Toyota2012与您加入的两个表(PriceCodes和tbl_NWGW_Key)之间的关系超过1:1,则会发生这种情况,因为会有更多行。
即。如果对于tbl_Toyota2012中的每个条目,PriceCodes或tbl_NWGW_Key中有多个条目。
回答你的意见:
如果您有一个表'Parent'加入表'Children',那么有两个孩子的父母将返回多行。
SELECT Parent.Name, Child.Name FROM Parent
INNER JOIN Child on Parent.ID = ChildID
这可能会返回:
[Parent Name], [Child Name]
Bob, Susan
Bob, David