2012-07-26 4 views
0

일부 SQL을 배우고 있으며 3 개 이상의 테이블을 결합하는 전통적인 방법이 무엇인지 알고 싶습니다.SQL - 3 개 이상의 테이블 조인 기존 방법

NATURAL JOIN을 사용하고 JOIN ON에 대해 알고 있습니다. JOIN USING도 가능하다고 생각하고 있습니까? 그러나 전통적인 방법이 있다고 들었지만, 그것을 이해할 수는 없습니다.

SELECT c#, fn, ln, cat 
FROM TABLE1, TABLE4 
WHERE (TABLE1.c# = TABLE2.c# 
AND TABLE3.o# = TABLE2.o# 
AND TABLE4.i = TABLE3.i); 

하지만 항상 오류 ORA-00904를 얻을 : 유효하지 않은 식별자 %의

아무도 나를 도와 신경, 또는 올바른 방향으로 날 가리

나는 다음 시도했다 ?

주셔서 감사합니다 예에서

+1

몇 가지 조언 : 아마 NATOAL JOIN을 사용하지 마십시오. 일회용 adhoc 쿼리는 제외됩니다. –

+0

고마워, 알아. 나는 숙제를 위해 이것을 필요로했다. – Pztar

답변

4

:

SELECT c#, fn, ln, cat 
FROM TABLE1, TABLE4 
WHERE (TABLE1.c# = TABLE2.c# 
AND TABLE3.o# = TABLE2.o# 
AND TABLE4.i = TABLE3.i); 

... 당신의 WHERE 테이블 TABLE2 및 TABLE3 누락 절 참조.

당신이 원하는 것 중 하나이 :

SELECT c#, fn, ln, cat 
FROM TABLE1, TABLE4 
WHERE TABLE1.c# = TABLE4.c#; 

또는

SELECT c#, fn, ln, cat 
FROM TABLE1, TABLE2, TABLE3, TABLE4 
WHERE (TABLE1.c# = TABLE2.c# 
AND TABLE3.o# = TABLE2.o# 
AND TABLE4.i = TABLE3.i); 

... 난 당신이 오라클을 사용하는 추측 무엇입니까? '#'이있는 열 식별자는 유효합니까?

+0

네, 두 번째는 내가 필요한 것입니다. 나는 Table2와 Table3을 추가하지 않았다. 나는 그것이 내가 오류를 얻는 이유라고 생각한다. 또한 SELECT 문을 TABLE1.C#로 수정해야했습니다. 그렇지 않으면 모호한 열 오류가 발생했습니다. 당신의 도움을 주셔서 감사합니다! – Pztar

+0

'# '이있는 열은 정상입니다. 오라클은이를 내부적으로 사용합니다. ['v $ session'] (http://docs.oracle.com/cd/E14072_01/server.112/e10820/dynviews_3016.htm)보기에서'serial #'을 참조하십시오. 맛의 물질. 나는 개인적으로 팬이 아니다. –