2010-02-05 3 views
0

나는 다음과 같은 SQL 문이 있습니다오라클 PL/SQL : 내부 조인 쿼리에서 열 이름을 참조


SELECT * 
FROM cars car 
     LEFT JOIN (SELECT * 
        FROM cars auto 
         LEFT JOIN steeringwheels sw 
          ON auto.steeringwheelid = sw.ID 
        WHERE material = 'leather') innertable 
     ON innertable.ID = car.ID 
     LEFT JOIN steeringwheels sw 
     ON auto.steeringwheelid = sw.ID 
WHERE sw.material='plastic' 

이 쿼리를 두 번 테이블 "자동차"에서 열을 제공하지만, 다른 값을 자동차 테이블의 ID (쿼리의 목적은 Car.ID가 이드가 될 수있는 값을지도에 표시하여 재질이 가죽에서 플라스틱으로 변경됨)입니다.


------------------------------------ 
| ID | material | ID_1 | material_1 | 
------------------------------------- 
| 1 | leather | 4 | plastic | 
| 2 | leather | 7 | plastic | 
------------------------------------- 

그러나, 나는 다음과 같이 출력에만 ID 열 (안 재료 열)에 싶습니다


------------- 
| ID | ID_1 | 
------------- 
| 1 | 4 | 
| 2 | 7 | 
------------- 

을 내가 찾을 수없는 것처럼 내가이 일을 할 수 없었다 어떤 식 으로든 내부 쿼리의 ID 열을 참조하는 방법. 예를 들어


SELECT id, innertable.id 
(...) 

또는


SELECT id, auto.id 
(...) 

또는

SELECT id, id_1 
(...) 

은 작동하지 않습니다. 어떻게 이것을 달성 할 수 있습니까?

답변

1

select 문에서 내부 테이블의 열 이름을 명시 적으로 나열하십시오. 마찬가지로 :

...(SELECT auto.ID autoid, auto.Whatever).... 

다음 주에

선택 :

SELECT innertable.autoid .... 
1

이인가 필요하시면?

SELECT auto_id, steeringwheel_id 
    FROM cars car 
     LEFT JOIN (SELECT auto.ID AS auto_id, sw1.id AS steeringwheel_id 
        FROM cars auto 
         LEFT JOIN steeringwheels sw1 
          ON auto.steeringwheelid = sw1.ID 
        WHERE material = 'leather') innertable 
     ON innertable.auto_ID = car.ID 
     LEFT JOIN steeringwheels sw2 
     ON auto.steeringwheelid = sw2.ID 
    WHERE sw.material='plastic'