2011-09-09 2 views
0

JOIN이있는 같은 테이블 - 사용자 - 두 번을 조인하는 쿼리를 만들었습니다.PHP MySQL에서 테이블 쿼리를 결합하여 가져 오기를 읽어들입니다.

SELECT * from tbl1 
    JOIN tbl2 ON tbl2.USER_ID = tbl1.ID 
    JOIN tbl2 as alias ON tbl1.ID = tbl2.TEACHER_ID 
WHERE tbl1.ID = 45 

해당 테이블에 대한 첫 번째 호출은 정기적이며 두 번째로는 AS를 사용하는 별칭을 사용합니다. 내가 phpMyAdmin을에 결과를 얻을 때 , 나는 결과가 별칭으로 언급되지 볼 수 있지만, 보통의 이름으로, 그이 같다 :

USERNAME => 테드, ID_NUMBER => 33322552, ..., USERNAME => 조쉬 .... 나는이 쿼리에서 연관 배열

+0

테이블 스키마에 대한 자세한 정보를 제공해주십시오. mysql에 연결하는 방법과 PHP 코드에 대한 책임은 – ajreal

+0

입니다. SELECT * from tbl1 JOIN tbl2 ON tbl2.USER_ID = tbl1.ID JOIN tbl2 ON tbl1.ID = tbl2.TEACHER_ID WHERE tbl1.ID = 45 – Ted

+0

질문을 SQL – ajreal

답변

1

, 당신은 두 번, 당신이 진짜라는 테이블 TBL2로 다스 려하는 별칭을 사용하지 않는 것을 읽을 수있는 방법

. 이것은 작동하지 않습니다. 에이를 재 작성

SELECT * from tbl1 
JOIN tbl2 ON tbl2.USER_ID = tbl1.ID 
JOIN tbl2 as alias ON tbl1.ID = tbl2.TEACHER_ID 
//        ^^^^ there's no alias here, it's still tbl2 
WHERE tbl1.ID = 45 

:

SELECT * from tbl1 
JOIN tbl2 AS t2A ON t2A.USER_ID = tbl1.ID 
JOIN tbl2 AS t2B ON tbl1.ID = T2B.TEACHER_ID 
WHERE tbl1.ID = 45 

as 키워드는 선택 사항입니다.
이렇게하면 어떤 버전의 tbl2를 참조하고 있는지 오해 할 수 없습니다.

당신은 또한 같은 쿼리 2를 다시 작성할 수 있습니다

주 두 쿼리의 차이 :

SELECT * from tbl1 
JOIN tbl2 ON (tbl2.USER_ID = tbl1.ID) AND (tbl2.teacher_ID = tbl1.id) 
WHERE tbl1.ID = 45 

: 당신은 같은 쿼리 일을 다시 할 경우에는

SELECT * from tbl1 
JOIN tbl2 ON (tbl2.USER_ID = tbl1.ID) OR (tbl2.teacher_ID = tbl1.id) 
WHERE tbl1.ID = 45 

차이점을 보시겠습니까?

관련 문제