Background Image

FORUM

2010.02.23 20:10

group by 오류

조회 수 15344 추천 수 0 댓글 3
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 댓글로 가기 인쇄
select a.bo_table, a.bo_subject, bo_image_head from board a left join board_new b on a.bo_table = b.bo_table
where a.ca_id = '103010' group by a.bo_table order by bn_datetime desc for orderby_num() between 1 and 4 

위와 같은 쿼리가 mysql 에서는 되지만 cubrid 최신 버전에서는 안됩니다.

목적은 bo_table 컬럼만 중복제거 하려는 목적입니다

오류 메세지는 다음과 같습니다.

시멘틱: a.bo_subject은(는) 단일 값이 아닙니다. aggregate 질의어 내에 나타난 속성은 "group by" 절 내에 나타나야 합니다.

어떻게 해야하죠?
  • ?
    남재우 2010.02.23 20:45
    안녕하세요.
    CUBRID에서는 group by 사용시 group by 에 영향을 줄 수 있는 모든 필드가 group by 에 명시되어야 합니다. 따라서 select 절에 명시된 필드가 다 들어가야 합니다. 말씀하신 것처럼 bo_table 만 unique 하게 하려면 다른 필드들에 대하여 적절한 원칙을 가지고 질의가 되어야 할 것입니다. 즉, bo_table 이 1인 것에 대하여 bo_subejct 가 1과 2의 값을 가진다면 이중에 하나만 결과로 나와야 하는데 이렇게 하시려면 서브 질의를 이용하거나, 질의 조정이 꽤 필요합니다. 더군다나 정렬은 select 절에 없는 다른 필드를 이용해 정렬이 되고 있으니 조금 시간을 가지고 분석해 봐야 할 것 같습니다.
    분석해 보고 적절한 질의를 올려드리도록 하겠습니다.



  • ?
    초보 2010.02.23 20:51
    답변 감사합니다 질의 올려주시길 부탁드립니다 감사합니다~
  • ?
    남재우 2010.02.24 19:45

    안녕하세요.
    잘 아시겠지만, 혹시나 하여 일반적인 group by 에 대하여 설명을 먼저 드리겠습니다.
    board 테이블에 값이 아래와 같이 있는 경우(순번은 그냥 레코드 순서입니다),
    순번      bo_table      bo_subject
      1       'table1'      'subject1'
      2       'table1'      'subject2'
      3       'table2'      'subject1'
    bo_table이 'table1' 인 경우 bo_subject 는 서로 다른 두개의 값을 가집니다. 이 경우 일반적으로 group by 를 하게되면 질의는 select bo_table,bo_subject from ... group by bo_table,bo_subject 와 같이 대상이 되는 필드가 모드 group by 절에 명시되어야 합니다. 그리고 그 결과는 아래와 같습니다.
    bo_table      bo_subject
    'table1'      'subject1'
    'table1'      'subject2'
    'table2'      'subject1'

    그런데 질문하신 내용이 위와 같은 결과가 아니라 아래와 같은 결과라면 이건 간단히 처리가 않되며, 질의를 꽤 조정해야 합니다. 참고로 bo_subject 의 결과는 'subject1'이 나올지 'subject2'가 나올지는 보장할 수 없습니다.
    bo_table      bo_subject
    'table1'      'subject1'
    'table2'      'subject1'

    정확한 스키마를 알 수 없지만 몇가지 가정을 하고 아래와 같이 정리해봤습니다.
    각 필드는 문자열로 가정했고, order by 에 사용된 필드가 a 테이블의 것이며, 조인되는 두개테이블은 1:1이거나 1:0 을 가정했습니다. 그렇지 않으면 조인에 의해 결과가 늘어나게 되어 group by 처리에 문제가 발생합니다.
    그래서 조정된 질의는 아래와 같습니다. 조건절에 서브질의를 이용한 조건이 들어갔으며 서브질의에서 rownum 을 이용하여 하나의 결과만 가져오도록 하였습니다.
    결과는 원하는대로 나오겠지만 서브질의를 사용함으로써 group by와 orderby_num()이 없는 상태에서의 결과 개수만큼 서브질의가 수행되므로 성능은 좋지 않습니다.
    select a.bo_table, a.bo_subject, bo_image_head
    from board a left join board_new b on a.bo_table = b.bo_table
    where a.ca_id = '103010'
      and (a.bo_subject, a.bn_datetime)
            = (select a.bo_subject, a.bn_datetime
                    from board ab
                    where ab.bo_table = a.bo_table
                      and rownum = 1
            )
    group by a.bo_table, a.bo_subject, bo_image_head, a.bn_datetime
    order by bn_datetime desc for orderby_num() between 1 and 4


  1. CUBRID 사용자를 위한 DBeaver 도구 출시 안내

    Date2024.04.23 Byadmin Views144070
    read more
  2. BIT형 데이터에 대한 where ... IN 쿼리

    Date2010.03.10 By소라게 Views14237
    Read More
  3. portable용 cubrid 제작이 가능할까요?

    Date2010.03.10 Byletsgolee Views13136
    Read More
  4. 두 쿼리의 결과값을 빼려고 합니다.

    Date2010.03.09 By지니보이 Views18685
    Read More
  5. 큐브리드 설치후, 실행오류 발생

    Date2010.03.08 By챔프 Views13974
    Read More
  6. 단일 서버에서 복제구현이 가능한지?

    Date2010.03.06 By핸프맨 Views12900
    Read More
  7. IIS + PHP5 까지는 연동했습니다.

    Date2010.03.06 By】赤【 Views14827
    Read More
  8. 뷰 테이블 편집 cascade 오류

    Date2010.03.06 By초보 Views14130
    Read More
  9. 저장함수에 대하여

    Date2010.03.04 By보리빵 Views12579
    Read More
  10. 시리얼 업데이트 오류

    Date2010.03.04 By초보 Views12774
    Read More
  11. 큐브리드 데이타베이스 정지후 다시 데이타베이스 시작이 안됩니다.

    Date2010.03.03 By초보 Views13054
    Read More
  12. 쿼리 문제

    Date2010.03.03 By소라게 Views12607
    Read More
  13. 자동증가 컬럼수정후 자동증가값이 들어가게 하려면?

    Date2010.02.27 By초보 Views20874
    Read More
  14. 데이타 입력쿼리 실행시 unique 삽입 오류 납니다.

    Date2010.02.26 By초보 Views15900
    Read More
  15. 테이블 복구

    Date2010.02.26 Bymydream Views13545
    Read More
  16. mssql -> cubrid 데이터 이전시 문제

    Date2010.02.25 By종이 Views25562
    Read More
  17. Like 문이 의도하지 않은 결과값을 반환합니다.

    Date2010.02.25 By이진혁 Views15303
    Read More
  18. 한글메세지 출력 방법에 대해서..

    Date2010.02.25 By모야 Views15489
    Read More
  19. 555번 한글테이블 글 올린 사람입니다 (화면캡쳐함)

    Date2010.02.23 By유니콘 Views14480
    Read More
  20. 저장프로시저 함수-loadjava

    Date2010.02.23 By쪼로롱 Views18603
    Read More
  21. group by 오류

    Date2010.02.23 By초보 Views15344
    Read More
Board Pagination Prev 1 ... 180 181 182 183 184 185 186 187 188 189 ... 213 Next
/ 213

Contact Cubrid

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