일대 다 관계의 두 테이블에서
A 테이블의 제목과 B 테이블의 시간을 출력하게 되면
결과물이 B 테이블의 시간 레코드 수 만큼 출력되는데
select
A.ATITLE
,GROUP_CONCAT( B.BTIME SAPARATOR '|' )
from tableA A
left join tableB B on A.seq = B.fseq
와 같이하여 한번에 여러행의 결과를 그룹으로 출력할 수 있다.
A테이블의 데이터가 아래와 같고
ENO, ETITLE
22 테스트
23 테스트2
24 공연
31 테스트
32 인형극 '나의 열살'
B테이블의 데이터가
22 2009-02-05 오후 12:12:00
23 2009-02-15 오전 11:11:00
23 2009-02-16 오후 12:12:00
24 2009-02-12 오전 1:01:00
24 2009-02-13 오전 1:01:00
24 2009-02-14 오전 1:01:00
24 2009-02-15 오전 1:01:00
24 2009-02-16 오전 1:01:00
24 2009-02-17 오전 1:01:00
24 2009-02-18 오전 1:01:00
24 2009-02-19 오전 1:01:00
24 2009-02-20 오전 1:01:00
31 2009-02-12 오후 1:24:00
31 2009-02-14 오후 2:15:00
31 2009-02-16 오후 10:33:00
32 2009-02-28 오후 12:12:00
위와 같다면
select * from(
select
A.ENO
ETITLE
,group_concat( substr(B.ETDATE, 1, 16) SEPARATOR ' \\| ' ) as ETDATE
from tblexhibition A
left join
tblexhibitiontime B on A.ENO = B.ENO
group by A.eno
)E
이런 쿼리를 이용해서
22 2009-02-05 오후 12:12:00
23 2009-02-15 오전 11:11:00|2009-02-16 오후 12:12:00
24 2009-02-12 오전 1:01:00|2009-02-13 오전 1:01:00|2009-02-14 오전 1:01:00 ~~~
형식으로 레코드를 합칠 수 있다.
다른 DBMS에서는 동일한 기능을 수행하는 함수를 찾지 못했음.