database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
Oracle
Informix
Sybase
ㆍMS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
MS-SQL Q&A 6976 게시물 읽기
No. 6976
다른 테이블 참조하기 질문 입니다.
작성자
달바라기(crimsonx)
작성일
2016-05-12 10:33ⓒ
2016-05-12 10:37ⓜ
조회수
4,158

안녕하세요

 

테이블 A

NO CODE1 CODE2 CODE3

1 111 222 333

2 112 223 334

3 113 224 335

 

테이블 B

NO CODE NAME

1 111 홍길동

2 112 고길동

3 222 과장

4 223 부장

5 333 서초구

6 334 영등포구

 

NO CODE1 CODE2 CODE3

1 홍길동 과장 서초구

2. 고길동 과장 영등포구

 

이렇게 줄력 하고자 합니다.

도움 부탁 드립니다.

 

이 글에 대한 댓글이 총 6건 있습니다.

SELECT a.no
     , b1.name name1
     , b2.name name2
     , b3.name name3
  FROM a
 INNER JOIN b b1 ON a.code1 = b1.code
 INNER JOIN b b2 ON a.code2 = b2.code
 INNER JOIN b b3 ON a.code3 = b3.code
;

마농(manon94)님이 2016-05-12 13:35에 작성한 댓글입니다.

답변 감사 합니다.

 

그런데 만약 테이블 A에서 CODE1~3중 하나라도 NULL이라면 조회가 되질 않습니다.

 

그래서 생각해본게

(SELECT NAME FROM B X INNER JOIN A Z ON X.CODE = Z.CODE1)

 

이렇게 하니까 이름이 전부 조회가 되네요.

 

이건 어떻게 해결 해야 할까요?

 

달바라기(crimsonx)님이 2016-05-19 15:47에 작성한 댓글입니다.
이 댓글은 2016-05-19 15:53에 마지막으로 수정되었습니다.

-- 처음부터 예시자료에 널을 포함시켜 주셨으면 좋았겠네요.


SELECT a.no
     , b1.name name1
     , b2.name name2
     , b3.name name3
  FROM a
  LEFT OUTER JOIN b b1 ON a.code1 = b1.code
  LEFT OUTER JOIN b b2 ON a.code2 = b2.code
  LEFT OUTER JOIN b b3 ON a.code3 = b3.code
;

마농(manon94)님이 2016-05-19 16:32에 작성한 댓글입니다.

답변 감사 합니다.

달바라기(crimsonx)님이 2016-05-20 10:03에 작성한 댓글입니다.

상황이 추가되어 추가질문 드립니다.

 

테이블 TT

NO CODE1 TYPE

1 111 1

2 111 2

3 222 1

3 222 2

4 333 1

5 333 2

 

원질문에 대한 내용을 출력하되 테이블TT에서 TYPE값이 1인 사람의 정보만 출력 하려면 어떻게 해야 하나요?

달바라기(crimsonx)님이 2016-05-20 16:52에 작성한 댓글입니다.

질문이 모호하네요.
type 이 a 의 컬럼인가요? b 의 컬럼인가요?


-- 1. A 의 컬럼인 경우.
SELECT a.no
     , b1.name name1
     , b2.name name2
     , b3.name name3
  FROM a
  LEFT OUTER JOIN b b1 ON a.code1 = b1.code
  LEFT OUTER JOIN b b2 ON a.code2 = b2.code
  LEFT OUTER JOIN b b3 ON a.code3 = b3.code
 WHERE a.type = '1'
;


-- 2. B 의 컬럼인 경우.
SELECT a.no
     , b1.name name1
     , b2.name name2
     , b3.name name3
  FROM a
  LEFT OUTER JOIN b b1 ON a.code1 = b1.code AND b1.type = '1'
  LEFT OUTER JOIN b b2 ON a.code2 = b2.code AND b2.type = '1'
  LEFT OUTER JOIN b b3 ON a.code3 = b3.code AND b3.type = '1'
;

마농(manon94)님이 2016-06-17 14:51에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
6979쇼핑몰관리하는 C, MSSQL 연동 중
초보
2016-05-22
3909
6978group by 해당조건은 빼고싶어요 [1]
김우성
2016-05-21
4039
6977MSSQL ldf 파일이 갑자기 늘어납니다
김성필
2016-05-20
4172
6976다른 테이블 참조하기 질문 입니다. [6]
달바라기
2016-05-12
4158
6975순번을 넣고싶은데요 방법이있나요? [2]
김우성
2016-05-11
4110
6974시스템(서버, DB) 날짜 임의로 변경하는 방법 [2]
정길환
2016-05-04
4386
6973MSSQL 2008 Express 백업 스크립트좀 봐주세요
김우성
2016-04-29
4249
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.022초, 이곳 서비스는
	PostgreSQL v16.4로 자료를 관리합니다