나는 다음과 같은 열이있는 테이블 연결 및 위치를 가지고 :동일한 테이블을 여러 개 결합하는 방법은 무엇입니까?
연결 :
LocationIDFrom
LocationIDTo
Duration
위치 :
LocationID
LocationName
예제 기록은 다음과 같다 : 연결 :
,756,933,737,039,043,210위치 : 나는 열 LocationFrom, LocationTo, 시간과 함께 테이블을 표시하고 싶었
1, New York
2, Boston
3 Los Angeles
. 기록에 대한 위의 예는 내가 다음 쿼리
SELECT l1.LocationName AS LocationFrom, l2.LocationName AS LocationTo, c.Duration
FROM Connection c
INNER JOIN Location l1 ON l1.LocationID= c.LocationIDFrom
INNER JOIN Location l2 ON l2.LocationID= c.LocationIDTo
을 사용하려고하지만 결과는 불완전
New York, Boston, 3ms
Boston, New York, 5ms
Los Angeles, Boston, 2ms
것; 위치 정보가 LocationIDFrom 및 LocationIDTo에 대한 위치 테이블에 저장된 행이 누락되었습니다.
위 쿼리를 수정하거나 ID 대신 LocationFrom 및 LocationTo에 대해 동일한 테이블에서 검색해야하는 위치 이름이있는 테이블을 반환하는 올바른 방법을 아는 사람이 있습니까?
Here 비슷한 문제에 대한 해결책을 찾았지만 위에 설명 된 문제에 대한 원리가 왜 작동하지 않는지 알 수 없습니다.
행이 누락 될 수있는 방법을 이해하지 못합니다. 그것에 대해 자세히 설명해 주시겠습니까? 참조 무결성이 있다고 가정합니다. 즉, Connections의 모든 위치 ID가 실제로 위치에 있습니다. –
검색어가 올바른 것 같습니다. 위치 ID가 NULL 일 수있는 경우가 있습니까? 그렇다면'INNER JOIN' 대신'LEFT JOIN'을 사용하고 싶을 것입니다. –
내 실수! 쿼리는 모든 ID의 위치 정보가 위치 테이블에 저장되는 경우 올바른 결과를 반환합니다. 나는 틀린 입장을 간과했다. –