2014-12-15 2 views
4

나는이 두 개의 열이있는 MySQL의 DB라는 이름의 relOwner : OwnerID을 RelationshipOwner참조 같은 행 조인

조인과 내가 쿼리를 작성하고 그 참조 DB를 : 어떻게

$query = "SELECT b.Contact, b.ContactB, relOwner.OwnerID, relOwner.RelationshipOwner 
    FROM b 
    Left JOIN relOwner 
    ON b.Contact = relOwner.OwnerID 
    Left JOIN relOwner 
    ON b.ContactB = relOwner.OwnerID 
"; 

내 PHP에서 RelationshipOwner의 값을 개별적으로 참조합니까?

$RelationshipOwner = $row['RelationshipOwner']; 
$RelationshipOwnerB = $row['RelationshipOwner']; <--- Get value from second JOIN 

미리 감사드립니다.

+1

내가 정확하게 다음 질문을 이해한다면 당신은 아마 열 별칭을 사용해야합니다. 두 개의 테이블을 사용 중입니다. 그들은 같은 중요시하는 점은 무엇입니까? 또한 같은 테이블을 두 번 '결합'해서는 안되며 대신 'AND'를 사용해야합니다. –

+0

표 b에는 relOwner 테이블의 OwnerID 열과 상관 관계가있는 두 개의 열인 Contact 및 ContactB가 있습니다. – user1041931

+0

두 개의 개별 쿼리를 각각 하나의 조인으로 사용하지 않는 이유는 무엇입니까? –

답변

3

테이블 b과 테이블 relOwner (외자계 ContactContactB)에 두 개의 외래 키 열이있는 것으로 보입니다.

Sverri의 의견에 따라, 당신은 (ro2와 예 접두사 두 번째 테이블 열) 다른 테이블 열에서 다른 이름을 (내가 ro1ro2을 사용했습니다) 테이블에 대해 다른 별칭을 사용하고, 프로젝트가 필요합니다

: 당신은 다음 참조 할 수

SELECT b.Contact, b.ContactB, ro1.OwnerID, ro1.RelationshipOwner, 
    ro2.OwnerID as ro2OwnerId, ro2.RelationshipOwner as ro2RelationshipOwner 
FROM b -- Is this table Contact? If so then "Contact b" 
    Left JOIN relOwner ro1 
    ON b.Contact = ro1.OwnerID 
    Left JOIN relOwner ro2 
    ON b.ContactB = ro2.OwnerID; 

:

$row['ro2RelationshipOwner']; 
+0

아직 작동하지 않았지만이 권리가 있습니다. ro1.RelationshipOwner as ro2RelationshipOwner? – user1041931

+0

죄송합니다 - 잘 발견되었습니다. 'ro2.RelationshipOwner as ro2RelationshipOwner' - 해결했습니다. – StuartLC