2009-12-22 2 views
1
SELECT * 
    FROM (SELECT ROWNUM rnum, 
       query.* 
     FROM (WITH myQuery AS(
        SELECT column_b 
         FROM table_a a 
        WHERE a.column_a = 1234) 
     SELECT b.column_e AS some_column 
      FROM table_b b, 
       table_c c, 
       table_a a 
     LEFT JOIN table_d d ON c.column_c = d.column_d 
      JOIN myQuery mq ON a.column_b = mq.column_b 
      WHERE b.column_b = a.column_b) query) 
WHERE rnum > 0 
+0

오류 메시지가 나타나거나 예기치 않은 결과가 표시되고 있습니까? – harto

+0

ORA-00904, 유효하지 않은 문자열 식별자 – user61734

+0

을 말하는 두 번째 조인 조건에서 오류 메시지가 표시됩니다. 열 이름을 확인했는데 정확합니까? – user61734

답변

2

ANSI-88과 ANSI-92 JOIN 구문을 혼용하지 마십시오. 둘 중 하나를 선택하십시오. - 따라서 나는 WITH 조항이 하위 쿼리에서 정의 할 수 있다는 것을 알고하지 않았다

??? 더 - 내가 한

WITH myQuery AS (
    SELECT column_b 
    FROM table_a a 
    WHERE a.column_a = 1234) 
SELECT x.* 
    FROM (SELECT b.column_e AS some_column, 
       ROWNUM 'rnum' 
      FROM table_b b 
      JOIN TABLE_A a ON a.column_b = b.column_b 
      JOIN myQuery mq ON mq.column_b = a.column_b 
      JOIN table_c c ON c.? = ?? --need join criteria here 
    LEFT JOIN table_d d ON c.column_c = d.column_d) x 
WHERE x.rnum > 0 

귀하의 예 TABLE_C가에 조인 어떤 부족 : 여기에 ANSI-92 구문을 사용하여 쿼리입니다 10g에서 시도 할 때 과거에 오류가 발생했는지 확인하십시오.

+0

-1 귀하의 요점 # 1 - WITH 절이 하위 쿼리 내에 정의 될 수 있습니다. +1 # 2 포인트 - 기존 조인 구문과 새로운 조인 구문을 혼합하면 ORA-00904가 발생합니다. –

관련 문제