답변:
mcalex가 지적한 것처럼 테이블 참조 이므로이 경우 조인 된 동일한 테이블을 두 번 참조합니다. Person
비트 (그래픽)에 따라 사람의 이름이 포함되어 있습니다.
쿼리는 다음과 같습니다.
SELECT p1.Person AS PERSON, p2.Person AS FRIEND_OF_FRIEND
FROM PersonFriend pf1
JOIN Person p1 ON pf1.PersonID = p1.ID
JOIN PersonFriend pf2 ON pf2.PersonID = pf1.FriendID
JOIN Person p2 ON pf2.FriendID = p2.ID
WHERE p1.Person = "Alice" and pf2.FriendID <> p1.ID
FROM
절의 표에 대한 각 언급을주의 깊게보십시오 . 언급 할 때마다 속기 (예 :)가 할당되어 있음을 알 수 있습니다 JOIN Person
p1
. 다음 shorthands / 참조 이름으로 끝 : p1
, p2
, pf1
와 pf2
. 동안 p1
과 것은 p2
표 참조 Person
, pf1
및 pf2
참조 PersonFriend
.
일반적인 상황 에서 Person
또는 테이블에서와 같이 테이블의 전체 이름을 사용할 수 있지만이 쿼리에 여러 개의 자체 조인이 있으므로 테이블의 특정 인스턴스 인스턴스를 의미하는 다른 필드를 식별하는 다른 방법이 필요합니다.PersonFriend
JOINS
편집 : mcalex ( 하나의 쿼리에 두 번 테이블 사용)가 제공 한 참조 에는 자체 조인의 의미에 대한 자세한 정보가 있습니다.