두개의 테이블에 조인 연결하는 쿼리문 채택완료

a 테이블에서 값을 가져 오면서 참조값을 b,c 두 테이블과 연결헤 값이 있는 테이블에서 가져오고 싶은데 방법을 모르겠네요.

예를들어 a 테이블에는 이름과 색상 번호가 있습니다.

name  no
홍길동  1
임꺽정  2
황진이  3

b 테이블에는 번호와 색상이 있습니다.

no color 
1  빨강
2  노랑

c 테이블에도 번호와 색상이 있습니다.

no color
3  파랑


이때 a 테이블을 SELECT 하면서 아래와 같은 결과가 필요합니다.

홍길동 빨강
임꺽정 노랑
황진이 파랑

즉, 조인을 하면서 먼저 b 테이블에 같은 번호가 있으면 거기서 색상을 찾고,
없으면 c 테이블에서 검색해서 찾고 싶습니다.
(동일한 번호가 b, c 두 곳에 모두 있지는 않습니다.  둘 중 한 곳에만 있습니다.)

쿼리를 어떻게 작성해야 하죠??
 

답변 3개

채택된 답변
+20 포인트
Copy
SELECT A.name, BB.color 

FROM A ,

   (

     SELECT no, color FROM b

     UNION ALL

      SELECT no, color FROM c

      WHERE c.id = '1'  // 변경이 필요한조건

   ) BB

WHERE A.no = BB.no

union 이나 union all 을 할때는 컬럼명을 명시하는게 좋습니다.

테이블마다 다른 컬럼(추가도 가능하거든요)

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

감사합니다...
이렇게 하면 될 것 같아요.. 해봐야징....ㅎ

댓글을 작성하려면 로그인이 필요합니다.

감사합니다.
그런데 조건을 조금 더 까다롭게 할 때는 어떻게 하나요??
추가된 조건은 아래와 같습니다.
 

a 테이블에서 값을 가져 오면서 참조값을 b,c 두 테이블과 연결헤 값이 있는 테이블에서 가져오고 싶은데 방법을 모르겠네요.

예를들어 a 테이블에는 이름과 색상 번호가 있습니다.

name  no
홍길동  1
임꺽정  2
황진이  3

b 테이블에는 번호와 색상이 있습니다.

no color 
1  빨강
2  노랑

c 테이블에도 번호와 색상이 있습니다.
그런데 c 테이블에는 id 가 추가로 있습니다. id 에 따라 색상이 달라 질 수도 있습니다.

id no color
1  3  파랑
2  3  초록 


이때 a 테이블을 SELECT 하면서 id=2 로 조건을 주면 아래와 같은 결과가 필요합니다.

홍길동 빨강
임꺽정 노랑
황진이 초록 

즉, 조인을 하면서 먼저 b 테이블에 같은 번호가 있으면 거기서 색상을 찾고,
없으면 c 테이블에서 검색해서 찾고 싶습니다.
또한 c테이블에서 찾을 때는 id 조건에 따라 값을 찾아야 하구요.

처음부터 제대로 물어 보지 않아서 죄송합니다...ㅠ

쓰고 나니 그 조건이 필요해서...


 

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

b 테이블과 c 테이블을 union으로 결합해서 a 테이블과 join 하면 됩니다.

Copy
SELECT * FROM table_a AS ta JOIN

(SELECT * FROM table_b UNION SELECT * FROM table_c) AS tbc

ON ta.no = tbc.no

대략 이렇게 짜면 될 것 같습니다.

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인
🐛 버그신고