Background Image

FORUM

조회 수 27880 추천 수 0 댓글 2
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
안녕하세요, 

제가 근무하는 회사에서는 MySQL 을 기반으로 하는 시스템이 좀 많은 편입니다.

주로 MySQL 을 그리고 MS-SQL 을 사용했지만,
무료라는 이점과 PHP와의 궁합 문제로 MySQL 의 사용 빈도가 높았습니다.

그런데 이번에 오라클이 Sun을 인수한 것을 보고는 아무래도 DB 쪽에 대해 생각을 많이 가지게 되는 것 같습니다.

해서, 쿼리를 하나씩 변경해보고자 하는데 MySQL 함수들 때문에 몇가지 막혀 질문을 드려 봅니다.

그 중 하나로, MySQL 의 GROUP_CONCAT 함수를 이용하면,
여러 레코드 결과를 하나의 레코드 결과로 묶어 획득 할 수 있습니다.

간단한 예제로는 다음과 같습니다.

# 테이블 : user_join_groups  (사용자가 가입한 그룹 정보)
group_id  / Int형 / FK / 가입한 그룹의 고유번호
user_id  / Int 형 / FK / 사용자 고유번호

# 테이블 : groups (그룹 메타 정보)
group_id / Int 형 / PK / 그룹 고유번호
name / Varchar / 그룹 이름


     SELECT GROUP_CONCAT(DISTINCT CONCAT(B.uid,':',B.name) SEPARATOR ';') as join_group
     FROM user_join_groups AS A
     INNER JOIN groups AS B
     ON A.group_id = B.group_id
     GROUP BY A.user_id

상기 쿼리의 경우, A 테이블에서 user_id 로 group by 하여, A의 group_id 와 B의 group_id 로 join 된 결과를
하나의 레코드 결과로 만들어 줍니다.

이와 같이 여러 줄의 row 를 하나의 row 로 결과를 합쳐주는 큐브리드 내장 함수가 있는지 궁금하며,
내장 함수가 없다면 이런 것을 DB 쿼리 상에서 처리하기 위한 방법이 있는지 궁금합니다.

감사합니다.

  • ?
    Prototype 2009.04.29 04:49
    안녕하세요.
    GROUP CONCAT 함수의 경우 CUBRID 에는 1:1 대응하는 함수는 없습니다. 단, LIST 를 사용하면 같은 결과를 얻을 수 있습니다.
    사용예는 다음과 같습니다.

    MYSQL QUERY 가 SELECT col_1, GROUP_CONCAT(col_2 ORDER BY col_2 desc SEPARATOR, '^') FROM tbl group by col_1; 라고 가정하면

    1. 해당 컬럼이 INT 계열 컬럼일 경우
    SELECT col_1, LIST(SELECT int_column || '^' FROM tbl ORDER BY int_column desc) FROM tbl group by col_1;

    2. 해당 컬럼이 CHAR 계열 컬럼일 경우
    SELECT col_1, LIST(SELECT trim(char_column) || '^' FROM tbl ORDER BY char_column desc) FROM tbl group by col_1;

    로 응용하여 사용하실 수 있습니다.
  • ?
    차오이 2009.04.29 05:10
    네, 알려주신 방법으로 한번 해봐야 겠습니다.
    잘 될런지 모르겠네요..

List of Articles
번호 제목 글쓴이 날짜 조회 수
공지 SQLGate for CUBRID 영구 무료 라이선스 제공 file admin 2020.04.09 4284
916 큐브리드 매니저에서 서브쿼리 날리면 값이 안나오는 문제 1 지니보이 2010.01.29 11071
915 CUBRID 공간데이터 타입 기대해도 되나요? 3 kladess 2011.11.19 11071
914 데이트타입 컬럼의 주를 구하는 함수는? 2 초보 2010.03.31 11081
913 cubrid_prepare 오류 질문드립니다 4 엠지 2012.05.17 11086
912 Oledb 문자열 값 가져오기 실패 문의입니다. 4 콩이아부지 2013.03.11 11087
911 윈도우 큐브리드 메니저로 리눅스 접속 3 노스 2010.09.14 11092
910 linux demodb구동시 에러 1 시나브로 2013.09.12 11103
909 아카이브 로그 자동 삭제 및 볼륨 자동 생성 문의 1 소라게 2013.11.22 11105
908 CUBRID 매니저 서버 연결 오류 3 file 지용 2009.09.09 11118
907 브로커 타임아웃 설정 가능여부 문의 1 장경수 2014.01.20 11125
906 온라인 메뉴얼이 firefox에서 동작이 안되네요. 1 flypig 2009.03.25 11126
905 serial 또는 auto increment 현재값 수정 1 소라게 2014.02.25 11129
904 CUBRID DB 32bit에서 64bit 변경 방법 1 동훈이 2016.09.07 11141
903 ODBC를 사용해서 디비작업이 안되요 1 요한 2010.04.15 11142
902 쿼리수행시 Lock 관련 문의 2 nagh 2014.12.11 11152
901 GRANT 주기 [Cannot issue GRANT/REVOKE to owner of a class] 에러 발생 1 보물섬 2016.07.26 11175
900 큐브리드 메니저 2.2 에서 엑셀파일 임포트는 어떻게? 1 penmouse 2010.06.05 11177
899 Java SP 질문 9 hyperhand 2009.12.23 11178
898 db 의 데이터를 다른곳에서 똑 같이 만들려고 하는데요.. 3 coolbyj 2009.10.23 11180
897 4.0 최초 설치후 DB 구동 불가 증상 7 reerror 2011.11.10 11195
Board Pagination Prev 1 ... 149 150 151 152 153 154 155 156 157 158 ... 199 Next
/ 199

Contact Cubrid

대표전화 070-4077-2110 / 기술문의 070-4077-2113 / 영업문의 070-4077-2112 / Email. contact_at_cubrid.com
Contact Sales