select * from ConnectionT natural join Request_SetDataT where Request_SetDataT.setState='PROC'
다음과 같은 MySQL 쿼리를 PostgreSQL로 바꿀려고하는데
natural join 이라는놈이 대체 해결이 안되네요
PostgreSQL로 바꾸면 어떻게 해당되는 건지요
책도 찾아보고 글도 검색하여 읽어 봤지만 도저히 이해가 안됩니다 ㅠ
고수분들 도와주십시오 !
natural join 은 sql 표준에 따르면,
테이블 간 같은 칼럼 이름에 대해서 먼저 앞에 나오고,
다음에 왼쪽 테이블의 남은 칼럼들, 그리고 오른쪽의 남은 칼럼들이 나열됩니다.
또한 윗 쿼리 같은 경우는 inner join이 되기 때문에 공통된 컬럼의 자료가 서로 일치하는 경우만 나오겠죠.
다음은 PostgreSQL 8.4.0 버전의 natural join 에 대한 쿼리 결과입니다.
제가 보기에는 지극히 정상적으로 보입니다.
아마도 그 이하 버전에서도 정상적으로 보일 것 같습니다.
ioseph=# \d a Table "ioseph.a" Column | Type | Modifiers--------+---------+----------- c1 | integer | c2 | integer | c4 | integer | c5 | integer |ioseph=# \d b Table "ioseph.b" Column | Type | Modifiers--------+---------+----------- c3 | integer | c2 | integer | c6 | integer | c4 | integer |ioseph=# select * from a; c1 | c2 | c4 | c5----+----+----+---- 1 | 1 | 1 |(1 row)ioseph=# select * from b; c3 | c2 | c6 | c4----+----+----+---- 1 | 1 | | 1 2 | 2 | | 1(2 rows)ioseph=# select * from a natural join b; c2 | c4 | c1 | c5 | c3 | c6----+----+----+----+----+---- 1 | 1 | 1 | | 1 |(1 row)ioseph=# select * from a natural join b where b.c3=1; c2 | c4 | c1 | c5 | c3 | c6----+----+----+----+----+---- 1 | 1 | 1 | | 1 |(1 row)