이 쿼리에서는 5 개의 테이블, 회사, 프로그래머, 테스터, 관리자 및 테이블 계약 테이블에서 정보를 추출합니다. 필자는 프로그래머, 테스터 및 관리자 명과 전화 번호뿐만 아니라 자신이 일하는 회사를 추출 할 것이고이 회사는 x 사람의 요청이 중요하지 않기 때문에이 프로그램을 관리 할 책임이 있습니다.중복 된 SQL 서버를 방지
문제는 아래 코드와 같습니다. 프로그래머의 이름과 전화 번호가 회사의 관리자 및 테스터의 수만큼 나올 것 같은 정보가있을 때마다 정보가 여러 번 나옵니다.
왼쪽 외부 조인을 시도했는데 결과가 더 많았습니다. 다음 번에 결과가 복제되지 않지만 NULL이라고 말하면 어떻게 수정할 수 있습니까?
SELECT DISTINCT pg.name,
pg.Tel_Nr,
Mgr.name,
Mgr.Tel_Nr,
Ts.Name,
Ts.Tel_Nr,
Pg.Name,
con.program_name
FROM Company AS Cm
INNER JOIN Programmer AS Pg ON Pg.company = Cm.name
INNER JOIN Manager AS Mg ON Mg.company = Cm.name
INNER JOIN Tester AS Ts ON Ts.company = Cm.name
INNER JOIN Contract AS Con ON Con.program_name = 'My Program'
AND Cm.name = Con.Company
어떤 테이블로 인해 문제가 발생합니까? 관리자 및 테스터? – sourcecode
프로그래머와 테스터가 2 명 있다고 가정 해보십시오. 내 결과는 첫 번째 행이됩니다 : pg1, pg1_tel, mgr1, mgr1_tel, ts1, ts1.tel, cmp.name 두 번째 행 pg1에서 pg1.tel은 이전에 발견 되었기 때문에 NULL이어야합니다. ts1, ts1.tel과 동일합니다 그러면 두 번째 행이됩니다 : pg1, pg1_tel, mgr2, mgr2_tel, ts1, ts1.tel, cmp.name – Legjendat