홈페이지제작

MySQL에서 Join 시 중복 컬럼명 PHP에서 처리

개발괴발 2012. 7. 3. 09:16

MySQL에서 Join 시 중복 컬럼명 PHP에서 처리하기

PHP로 프로그램 작성시 MySQL 연동에서 Join 시 중복 컬럼명을 처리하는 것이 애매합니다.

예를 들면, 

table1 이 a, b,c 세개의 컬럼(필드)로 구성되어 있고

table2 가 a, d, e 로 구성되어 있다고 가정합니다.


위 테이블 조건에서 아래와 같은 쿼리문을 실행합니다.

select * from table1 as A join table2 as B on A.a = B.a where A.b='서울';


이때, 컬럼a가 table1의 a인지 table2의 a인지를 구분해야할 경우가 생깁니다.

MySQL 쿼리 상에서는 alias를 줘서 A.a 또는 B.a로 구분이 가능합니다.


테이블


그런데, 이야기를 PHP로 옮겼을때 문제가 생깁니다.

$row = mysql_fetch_array($result);

echo $row["a"]; 

이런 경우 어떤 테이블의 a가 출력되는가도 고민이지만, 특정 테이블의 a를 출력하고 싶을 때 어떻게 지정해야 합니까?

물론, $row[0], $row[3] 등과 같이 숫자로 지정하면 되지만, 현실적으로 사용하기 좀 그렇습니다.


결론은, 다시 쿼리문을 돌려야 합니다.(제 의견입니다.)

만일 위 쿼리문의 결과중에 table2(B)의 a를 출력하고 싶다면?

이 경우에도 조인문은 꼭 써야 합니다. 왜냐하면, 조건문을 넣어야 하니까요. (서울이라는 조건)

그런데, 출력에서 컬럼이 모호해지므로, 해당 조건으로 해당 테이블에만 다시 쿼리를 돌려서 해당 컬럼을 출력하는 방법이 가장 간단한 것 같습니다.

일단 조인이 들어 있는 쿼리문을 돌리고, 값을 받아 출력하고 싶은 테이블에 대해 다시 쿼리를 돌려야 하는 것이죠.