2012-07-23 3 views
0

MySQ에서 세 개의 테이블을 조인하려고하는데, 할 때 잘못된 값을 가진 중복 행이 생깁니다. 내가 올바르게하고 있지 않은 것처럼 보입니다. 내가 발견하고자하는 데이터가 nt_tunlistent_priservarenummer에 의해 그룹화MySQL에서 3 개의 테이블에 합치면 값이 중복 된 행을 제공합니다.

nt_stentyper 
id | tagsten | varenr_tilb | prod_type | dk | no | sv 

nt_tunliste 
varenummer | tunnummer | beskrivelse 

nt_priser 
varenummer | pris 

:

내가 가입해야 세 개의 테이블이있다. 그 은 varenr_tilb에 대한 것입니다.

나는이 시도 :

SELECT * FROM nt_stentyper 
INNER JOIN nt_tunliste ON nt_stentyper.varenr_tilb = nt_tunliste.varenummer 
INNER JOIN nt_priser ON nt_stentyper.varenr_tilb = nt_tunliste.varenummer 
WHERE nt_stentyper.tagsten = 1 
ORDER BY nt_stentyper.prod_type ASC 

을 ...하지만 그 날처럼 중복 행을 제공 : 내가 원하는 바가 아니다 ...

ID tagsten varenr_tilb prod_type dk no sv varenummer tunnummer beskrivelse varenummer pris_dk 
1 1  12345678 1   1 1 1 12345678 12131415 RT 801  11111111 213 
1 1  12345678 1   1 1 1 12345678 12131415 RT 801  12345678 200 
5 1  11111111 5   1 1 1 11111111 11111112 Gratbånd  11111111 213 
5 1  11111111 5   1 1 1 11111111 11111112 Gratbånd  12345678 200 

.

쿼리에는 varenummer 중 하나만 표시되어야합니다.

+2

두 번째 조인 조건은 nt_priser와 관련이 있어야하지만 첫 번째 조인 조건의 복제본입니다. – mindandmedia

+0

@mindandmedia : 답변으로 게시해야합니다. – eggyal

답변

2

두 번째 조인 조건은 nt_priser과 관련이 있지만 첫 번째 조인 조건의 복제본입니다.

+0

Garh .... 그것을 보지 못했습니다! 고맙습니다! –

0

내부 조인에 사용 된 테이블 중 하나에 조인에 사용 된 열의 중복 값이 ​​있기 때문입니다.

는 테이블 에서 중복을 제거하거나 GROUP BY nt_stentyper.varenr_tilb 를 사용하거나 레코드를 선택하는 동안 SELECT DISTINCT *을 사용할 수 있습니다이를 방지합니다.

0

*를 선택하는 대신 필요한 필드 만 선택하십시오. 이런 식으로 뭔가 : 다른에

SELECT id, tagsten, nt_stentyper.varenr, prod_type, dk, no, sv, tunnummer, beskrivelse,  pris_dk FROM nt_stentyper 
INNER JOIN nt_tunliste ON nt_stentyper.varenr_tilb = nt_tunliste.varenummer 
INNER JOIN nt_priser ON nt_stentyper.varenr_tilb = nt_tunliste.varenummer 
WHERE nt_stentyper.tagsten = 1 
ORDER BY nt_stentyper.prod_type ASC 

관련이없는 참고, 나는 누구, 비 덴마크어가, 나중에 코드에서 거 보면이 경우 당신은 결코 알 수 없기 때문에 당신이 영어로 코딩을 모두 수행하는 것이 좋습니다 높은 것 :)

관련 문제