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
운영게시판
최근게시물
MySQL Q&A 30381 게시물 읽기
No. 30381
mysql에서 테이블명을 가변(?)적으로 조인하는방법;; 설명이 안되네요ㅠㅠ
작성자
이재근(tsha)
작성일
2012-11-22 19:29:53
조회수
5,111

mysql 에서 A 라는 테이블에 특정 테이블명과 id 값들이 저장되어 있습니다

 

A 테이블의 데이터를 select 해서 table_name 컬럼 값으로 B와 C테이블의 데이터를 조인 할 수 있나요?

 

예를들어

select ( select content from A.table_name where id = A.id ) from A

 

이런식으로 조인되는 테이블의 테이블명을 가변적으로 조인해서 데이터를 가져오는게 가능한가요?

 

A table

table_name id
B 12
C 25

 

B table

id content
11 내용1
12 내용2

 

C table

id content
24 내용3
25

내용4

 

 

설명이 잘 됐는지 모르겠네요 ㅜㅠ

이걸 검색해보려 해도 뭐라 검색 해야 할지 조차 모르겠어서 이렇게 질문 남깁니다 ㅠㅠ

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

SP를 사용하지 않고는 안된다고 알고 있습니다.

SP 안에서 쿼리를 수행한 후, 결과를 이용해 문자열을 생성하고, 이를 다시 실행하는 방법으로 가능합니다. 하지만, 추천할 만한 방법은 아닙니다.

 

(1) B, C 테이블을 합쳐 두 테이블의 내용을 구분지을 수 있는 새로운 컬럼을 생성하시거나,

(2) 테이블 구분자를 포함하고, B, C 테이블의 내용을 같이 가져오는 VIEW를 생성해서 해결하시면 어떨까요?

 

박현우(lqez)님이 2012-11-22 20:18:11에 작성한 댓글입니다.

데이터 정합성만 맞는다면

 

select case when a.table_name = 'B' then b.content
            when a.table_name = 'C' then c.content
       end AS content
       , a.id
from a
  left join b on b.id = a.id
  left join c on c.id = a.id

이런식 쿼리로 할 수 있습니다.

박인호(paerae)님이 2012-11-23 15:45:49에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
30433고수 여러분 mysql 오류좀 봐주세요 ㅠ 급합니다. [1]
황윤윤
2012-11-28
4064
30431Group by 사용시 해당데이터가 없을경우 출력문제 질문드립니다. [2]
천년둥이
2012-11-26
4225
30382검색관련 [1]
공중부
2012-11-22
3288
30381mysql에서 테이블명을 가변(?)적으로 조인하는방법;; 설명이 안되네요ㅠㅠ [2]
이재근
2012-11-22
5111
30362MySQL을대체교체할수있는,오픈소스MariaDB(http://mariadb.org)
마리아DB
2012-11-16
4134
30357DB2의 데이터를 Mysql에서 사용하고 싶습니다. [1]
최강산
2012-11-15
3602
303561개필드에 값을 배열로 담는 방법 질문 [2]
고형윤
2012-11-14
3871
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2017 DSN, All rights reserved.
작업시간: 0.071초, 이곳 서비스는
	PostgreSQL v9.6.3으로 자료를 관리합니다