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 29297 게시물 읽기
No. 29297
여러테이블 연결해서 조회하는 쿼리문 문의 입니다.
작성자
김선아(unexpected)
작성일
2009-09-10 17:16
조회수
5,804

안녕하세요....오늘도 좋은 하루 되세요~

mysql> select * from user;
+--------+------+
| uname  | uno  |...
+--------+------+
| 김선아   |    1   |...
| 홍길동   |    2   |...
+--------+------+

mysql> select * from user_item;
+------+-------+
|  uno  |  icode |...
+------+-------+
|    1    |   0010  |...
|    2    |   0010  |...
|    1    |   0012  |...
|    1    |   0016  |...
+------+-------+

mysql> select * from item;
+------+--------+
| icode |  iname |
+------+--------+
| 0010  |  하늘소  |
| 0011  |  거북이  |
| 0012  |  쉬리     |
| 0013  |  달팽이  |
| 0014  |  껌        |
| 0015  |  굼뱅이  |
| 0016  |  타조     |
+------+--------+

위와 같은 테이블 구조와 내용에서 아래와 같은 조회 결과물을 얻으려면 쿼리문이 어떻게 해야 하는지요....
items의 내용은 item 테이블의 각 iname이 ',' 구분자로 연결된 스트링입니다.
+--------+--------------------+
| uname  |   items                  |
+--------+--------------------+
| 김선아   |   하늘소, 쉬리, 타조 |
| 홍길동   |   하늘소                 |
+--------+--------------------+

열심히 이렇게 저렇게 해봤는데....안되네요...
부탁드립니다...꾸벅
이 글에 대한 댓글이 총 1건 있습니다.

안녕하세요 

제가 db2 유저인데요 

방법은 아는데 mysql로 변경이 좀 안되서요

찾아서 바꿔드릴려구 했는데 시간이 여의치 않네요

db2에서 사용하는 방식 셈플로 보내드릴께요

혹시 방법아시는분 답변 부탁드립니다.

수고하세요 

WITH
TEST(SEQ,VAL) AS (VALUES
(1,'국민'),
(1,'하나'),
(1,'제일'),
(2,'우리'),
(2,'광주'),
(3,'신한'),
(3,'외환'),
(3,'농협'),
(3,'기업'))

SELECT SEQ
,VAL1 ||
CASE WHEN VAL2 > '' THEN ',' || VAL2 ELSE '' END ||
CASE WHEN VAL3 > '' THEN ',' || VAL3 ELSE '' END ||
CASE WHEN VAL4 > '' THEN ',' || VAL4 ELSE '' END ||
CASE WHEN VAL5 > '' THEN ',' || VAL5 ELSE '' END
VAL
FROM (
SELECT SEQ
,VALUE(MAX(CASE WHEN RN = 1 THEN VAL ELSE '' END),'') VAL1
,VALUE(MAX(CASE WHEN RN = 2 THEN VAL ELSE '' END),'') VAL2
,VALUE(MAX(CASE WHEN RN = 3 THEN VAL ELSE '' END),'') VAL3
,VALUE(MAX(CASE WHEN RN = 4 THEN VAL ELSE '' END),'') VAL4
,VALUE(MAX(CASE WHEN RN = 5 THEN VAL ELSE '' END),'') VAL5
FROM (
SELECT SEQ ,VAL
,ROWNUMBER() OVER(PARTITION BY SEQ ORDER BY VAL ASC) RN
FROM TEST
) T1
GROUP BY SEQ
) T2

kkm0802님이 2009-09-11 17:52에 작성한 댓글입니다.
이 댓글은 2009-09-11 17:54에 마지막으로 수정되었습니다. Edit
[Top]
No.
제목
작성자
작성일
조회
29300MS Acess처럼 외래키로 여러값을 받을 수 있을까요?? [1]
Deck
2009-09-12
5821
29299프로시저가 뭔지 궁금합니다 [2]
Deck
2009-09-11
6887
29298서브쿼리에 대해서 질문좀 드릴게요... [3]
Deck
2009-09-11
5655
29297여러테이블 연결해서 조회하는 쿼리문 문의 입니다. [1]
김선아
2009-09-10
5804
29286데이타를 원하는대로 출력하고 싶은데요.. 잘 안되서요 ㅜㅜ [1]
goooooo
2009-09-09
5307
29285procedure 한글입력문제 [3]
조원준
2009-09-09
8758
29284질문드립니다 쿼리 where 절 [5]
전종구
2009-09-08
5795
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.017초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다