복붙노트

[SQL] 오라클 (? 오래) 조인 - 변환을위한 도구 / 스크립트를?

SQL

오라클 (? 오래) 조인 - 변환을위한 도구 / 스크립트를?

나는 오라클 선택을 이식되었고, 그래서 같은 쿼리를 많이 걸쳐 실행되었다 :

SELECT e.last_name,
       d.department_name
  FROM employees e,
      departments d
WHERE e.department_id(+) = d.department_id;

...과:

SELECT last_name, 
       d.department_id
  FROM employees e, 
       departments d
 WHERE e.department_id = d.department_id(+);

의 (+) 구문의 변종을 모두 변환에 대한 가이드 / 자습서가 있습니까? 이 구문은 심지어 어떤라고 (내가 구글 샅 샅히 뒤져 수 있도록)?

더 나은 .. 나 (선호 무료)이 변환을 수행하는 도구 / 스크립트가 있습니까? 어떤 종류의 최적화? 나는 포트에 이러한 쿼리의 500 주위가 ..

때이 표준은 단계적으로했다? 모든 정보에 감사드립니다.

해결법

  1. ==============================

    1.외부 지원 조인 ANSI-89 구문 문법을 제공하지 않기 때문에, (+)는 오라클 특정 사전 ANSI-92 OUTER JOIN 구문을한다.

    외부 지원 조인 ANSI-89 구문 문법을 제공하지 않기 때문에, (+)는 오라클 특정 사전 ANSI-92 OUTER JOIN 구문을한다.

    그것은 RIGHT 또는 LEFT는 표기법에 부착되는 테이블 및 컬럼 참조 있느냐에 따라 결정된다. 이 FROM 절에서 첫 번째 테이블과 관련된 열 옆에 지정되는 경우 - 그것은 RIGHT 조인입니다. 그렇지 않으면, 그것은 왼쪽 조인입니다. 조인의 차이를 알 필요 누군가를 위해 이것을 좋은 참조.

    첫 번째 쿼리 ANSI-92 구문을 사용하여 재 작성 :

        SELECT e.lastname,
               d.department_name
          FROM EMPLOYEES e
    RIGHT JOIN DEPARTMENTS d ON d.departmentid = e.departmentid
    

    두 번째 쿼리 ANSI-92 구문을 사용하여 재 작성 :

       SELECT e.lastname,
              d.department_name
         FROM EMPLOYEES e
    LEFT JOIN DEPARTMENTS d ON d.departmentid = e.departmentid
    
  2. ==============================

    2.구글 "오라클은 조인 구문을". 제 (+)의 외부 결합의 다른 맛에 대해 사용된다. 난 당신이 보여준 첫 번째는 왼쪽 외부 조인을 생각하고, 두 번째는 오른쪽 외부 조인입니다. 나는 조금을 할 수 있도록 나는 아주 잠시 동안이 표기법을 보지 못했다, 그러나 희망이 당신에게 구글을 공격하고 올바른 답변을 얻을 수있는 충분한 정보를 제공합니다.

    구글 "오라클은 조인 구문을". 제 (+)의 외부 결합의 다른 맛에 대해 사용된다. 난 당신이 보여준 첫 번째는 왼쪽 외부 조인을 생각하고, 두 번째는 오른쪽 외부 조인입니다. 나는 조금을 할 수 있도록 나는 아주 잠시 동안이 표기법을 보지 못했다, 그러나 희망이 당신에게 구글을 공격하고 올바른 답변을 얻을 수있는 충분한 정보를 제공합니다.

    최신 정보:

    그래서 당신은 당신을 위해 그것을 할 수있는 도구를 원하는가? 나는 SwisSQL 이런 식으로 뭔가를 할 수 있다고 들었지만, 쿼리의 대부분은 아주 간단 있다면 당신은 아마 당신을 위해 그것을 않는 작은 스크립트를 작성할 수 있습니다. OMG 조랑말의 대답은 잘 새로운 구문 옛에서 변환하는 패턴을 보여줍니다.

  3. ==============================

    3.이것은 확실히 같은도 간단한 상황에서 WHERE 절처럼 복잡 얻을 수 있습니다

    이것은 확실히 같은도 간단한 상황에서 WHERE 절처럼 복잡 얻을 수 있습니다

    WHERE e.id = d.manager_id(+) OR e.id = d.contact_id(+)
    

    UNION 또는 부속 쿼리로 변환합니다.

    당신이 비단뱀처럼 당신이 sqlparse 한 번 봐 걸릴 수 있습니다 경우 약속 외모와 당신은 당신이 필요 플러스 SQL 코드의 일부 재 포맷 할 수 있습니다. 그것은 쉽게 소스에서 직접 작동합니다. 당신은 무엇을 이야기해야하지만 지루한 파싱 부분을 작성을 덜어 않습니다.

  4. ==============================

    4.오라클 10g의 경우

    오라클 10g의 경우

    http://download.oracle.com/docs/cd/B19306_01/server.102/b14200/queries006.htm#i2054012

    버전이 다른 경우 구문은 아마 다르지 않다 가입하지만 당신은 온라인 오라클 매뉴얼의 다른 버전을 찾을 수 있습니다.

  5. ==============================

    5.나는 9i에 오라클 8i를의 전환에 떨어져가는이 구문을 기억하는 것 - 우리가 시간이 모든 쿼리를 통과 낭비하지 않았기 때문에 우리가 우리를 위해 모든 것을 변환 결국 두꺼비 플러그인을 가졌다 고 생각

    나는 9i에 오라클 8i를의 전환에 떨어져가는이 구문을 기억하는 것 - 우리가 시간이 모든 쿼리를 통과 낭비하지 않았기 때문에 우리가 우리를 위해 모든 것을 변환 결국 두꺼비 플러그인을 가졌다 고 생각

  6. ==============================

    6.나는 자동으로 변환을 수행하는 도구의 모르겠지만, 있었다하더라도, 어쨌든 그 변경 한 사례별로 검토 할 것입니다. 따라서, 나는 도구는 당신에게 많은 시간을 절약 할 수 있다고 생각하지 않습니다.

    나는 자동으로 변환을 수행하는 도구의 모르겠지만, 있었다하더라도, 어쨌든 그 변경 한 사례별로 검토 할 것입니다. 따라서, 나는 도구는 당신에게 많은 시간을 절약 할 수 있다고 생각하지 않습니다.

    http://www.dba-oracle.com/oracle_news/2004_2_19_rittman.htm는 말합니다 :

    또한 당신은 어디에서나 하나 개의 스타일이나 다른를 사용할 필요가 없습니다. 당신은 그들이 모두 킵가 작동 할 몇 가지 확신을 가지고, 한 번에 코드 한 쿼리를 변환 할 수 있습니다. 나는있는 그대로 쿼리를 떠나, 새로운 코드에서 ANSI SQL-92 구문을 사용하여 해결한다.

  7. from https://stackoverflow.com/questions/2425960/oracle-old-joins-a-tool-script-for-conversion by cc-by-sa and MIT license