1

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);

なぜこれが起こるのか誰か教えてもらえますか?

4

1 に答える 1

4

これは、tbl_Toyota2012 と結合する 2 つのテーブル (PriceCodes と tbl_NWGW_Key) の間に 1:1 以上の関係がある場合に発生します。これは、より多くの行が存在するためです。

つまり、tbl_Toyota2012 の各エントリに対して、PriceCodes または tbl_NWGW_Key に複数のエントリがある場合。

コメントに答えるには:

テーブル 'Children' に結合するテーブル 'Parent' がある場合、2 人の子を持つ親は複数の行を返します。

SELECT Parent.Name, Child.Name FROM Parent INNER JOIN Child on Parent.ID = ChildID

これは以下を返すかもしれません:

[Parent Name], [Child Name]

Bob, Susan

Bob, David

于 2013-02-08T11:56:51.313 に答える