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

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

QA

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

답변 3

본문

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


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 을 할때는 컬럼명을 명시하는게 좋습니다.

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

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


SELECT * FROM table_a AS ta JOIN
(SELECT * FROM table_b UNION SELECT * FROM table_c) AS tbc
ON ta.no = tbc.no

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

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

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 조건에 따라 값을 찾아야 하구요.

 

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

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


 

답변을 작성하시기 전에 로그인 해주세요.
QA 내용 검색
질문등록
전체 1,543
© SIRSOFT
현재 페이지 제일 처음으로