테스트 사이트 - 개발 중인 베타 버전입니다

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

도레미 2년 전 조회 2,066

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 포인트
플래토
2년 전

</p>

<p>SELECT A.name, BB.color </p>

<p>FROM A ,</p>

<p>   (</p>

<p>     SELECT no, color FROM b</p>

<p>     UNION ALL</p>

<p><span style="font-size: 0.875em;">      SELECT no, color FROM c</span></p>

<p><span style="font-size: 0.875em;">      WHERE c.id = '1'  // 변경이 필요한조건</span></p>

<p>   ) BB</p>

<p>WHERE A.no = BB.no</p>

<p>

 

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

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

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

답변에 대한 댓글 1개

도레미
2년 전
감사합니다...
이렇게 하면 될 것 같아요.. 해봐야징....ㅎ

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

2년 전

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

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 하면 됩니다.

</p>

<p>SELECT * FROM table_a AS ta JOIN</p>

<p>(SELECT * FROM table_b UNION SELECT * FROM table_c) AS tbc</p>

<p>ON ta.no = tbc.no</p>

<p>

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

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

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

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

로그인