2012-07-19 1 views
0

외부 조인을 사용하여 쿼리를 수행하려고합니다. 과거에는 항상 Oracle Pl/SQL을 사용했지만 지금은 MySQL을 배우려고합니다. USERS, USER_TYPE 및 GRADE의 3 개의 테이블을 조인하려고합니다. USERS 테이블에는 USER_TYPE에 대한 외래 키인 USER_TYPE_ID 열이 포함되며 GRADE에 대한 외래 키인 GRADE_ID 열도 포함합니다. 사용자 유형이 학생, 교수 등일 수 있기 때문에 외부 조인이 필요하며 교수진 일 경우 USER에는 등급이 없으므로 USER 테이블에 NULL GRADE_ID가 있습니다. 다음은 내 쿼리가 과거에 (+)를 사용하여 외부 조인에 사용 된 모습입니다.MySQL을 오라클 Pl/SQL (+)에서 MySQL로 변환

SELECT A.USER_NAME 
    , A.USER_TYPE_ID 
    , B.USER_TYPE_DESC 
    , A.GRADE_ID 
    , C.GRADE_DESC 
    FROM USERS A 
    , USER_TYPE B 
    , GRADE C 
WHERE A.USER_TYPE_ID = B.USER_TYPE_ID 
    AND A.GRADE_ID = C.GRADE_ID (+); 

누군가 나를이 질문을 MySQL 쿼리로 번역 할 수 있도록 도와 주시겠습니까?

미리 감사드립니다.

답변

1
SELECT u.user_name, u.user_type_id, ut.user_type_desc, u.grade_id, g.grade_desc 
FROM users u JOIN user_type ut ON (ut.user_type_id = u.user_type_id) 
LEFT JOIN grade g ON (u.grade_id = g.grade_id); 
+0

입력 RC 주셔서 감사합니다.하지만,이 등급에없는 자신의 GRADE_ID는 그에 때문 쿼리는 여전히 학년 (학생)가 사용자를 잡고, 모든 교직원 및 관리자를 던졌습니다 없는. GRADE_ID가 없더라도 모든 사용자를 얻기 위해 쿼리가 필요합니다. – Ryan

+0

아 .... 죄송합니다. 질문을 잘못 읽었습니다. 죄송합니다 ... 업데이트 드리겠습니다 –

+0

감사합니다. RC, 매력처럼 작동했습니다. MySQL을 계속 사용하면 앞으로 참고할 수있는 좋은 예가 될 것입니다. – Ryan

0
SELECT u.user_name, u.user_type_id, ut.user_type_desc, u.grade_id, g.grade_desc 
FROM users u, user_type ut 
LEFT OUTER JOIN grade g ON u.grade_id = g.grade_id 
WHERE ut.user_type_id = u.user_type_id