2013-02-08 3 views
1
보다 많은 행을 반환합니다.

원본 테이블에있는 것보다 많은 행을 반환하는 쿼리가 MS Access 2010에 있습니다.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

더 많은 행이 있으므로 tbl_Toyota2012와 가입하려는 두 테이블 (PriceCodes 및 tbl_NWGW_Key)간에 1 : 1 이상의 관계가있는 경우이 문제가 발생합니다.

즉, tbl_Toyota2012의 각 항목에 대해 PriceCodes 또는 tbl_NWGW_Key에 여러 항목이있는 경우 당신이 테이블 '어린이'한 줄 이상을 반환합니다 두 아이를 가진 부모에 조인 테이블 '부모'를하는 경우

:

는 귀하의 의견에 대답합니다.

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

이 반환 할 수 있습니다 : 대답에 대한

[Parent Name], [Child Name]

Bob, Susan

Bob, David

+0

감사합니다 ... 테이블을 필터링하는 방법은 무엇입니까 나는 할 수 있도록 이 중복 된 행을 볼 수 있습니까? – rohrl77

+0

그냥 다시 확인하십시오. 'PriceCodes'에 일치하는 레코드가 있고'tbl_NWGW_Key'에 또 다른 레코드가 있지만 한 줄에 표시되지 않았습니까? – rohrl77

+0

네, 맞습니다. 예를 들어 답을 수정하겠습니다. – GrandMasterFlush