mysql 테이블 그룹 조인 좀 질문 드립니다.

mysql 테이블 그룹 조인 좀 질문 드립니다.

QA

mysql 테이블 그룹 조인 좀 질문 드립니다.

본문

1. nameTable 이라는 테이블에는 

 

name    / membernum  /   jusocode   

 

김개똥        12                       1234                 

김개똥        12                       1234       

홍길동        13                       1232       

마동석        14                       1231    

 

2번 MeberGroup 이란 필드에는 

 

groupnum / jusocode / 

 

1          1231

2          1234

3         1232

 

 

이런식으로 존재 하는데 두개의 테이블을 조인해서 1번 테이블의 이름으로 그룹으로 묶으면서 

 

정렬은 2번 테이블의 그룹 넘버 순대로 정렬을 하려고 하는데 

 

 

SELECT u.* 
FROM nameTable u
   JOIN MeberGroup cat ON u.jusocode = cat.jusocode
ORDER BY cat.groupnum

 

 

 

이렇게 하면 조인이 잘되고 그룹으로 안묶었으니 잘 나옵니다. 

그런데 그룹으로 묶을려고 

 

SELECT u.* 
FROM nameTable u
   JOIN MeberGroup cat ON u.jusocode = cat.jusocode
GROUP u.name
ORDER BY cat.groupnum

 

이렇게 하면 1064 에러가 나네요 

 

뭐가 잘못된 걸까요 ? 

 

먼저 읽어 주셔서 감사에 인사 드립니다.

 

 

 

 

이 질문에 댓글 쓰기 :

답변 2

에러 메시지는 다 적어 주시기 바랍니다.

 

GROUP u.name

==>

GROUP BY  u.name

빠른 답변 정말 감사드립니다.

GROUP BY  u.name 바이를 넣어도 안되긴 했습니다. 제가 여기 적으면서 바이를 빼먹은거 같네요
그리고 실행하면 아래와 같은 에러가 뜹니다.

#1055 - Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'realestate.u.num_no' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by

num_no 필드는 그누보드  wr_id 처럼 자동으로 증가 하는 넘버 필드 입니다.

에러를 보면 u.name 으로 그루핑이 되었지만 num_no 가 숫자이므로 sum, max, min 같은 집계함수를 쓰지 않으면 안된다는 뜻입니다.

근데 그거만 해결하면 다른 필드도 똑같은 문제가 있겠네요

 

u.* 으로 하지말고 u.name, max(u.num_no) num_no 로 일단 하면서 필요한 컬럼을 추가하세요

댓글 너무나 감사드립니다 .
u.name, max(u.num_no) num_no 이런식으로 컬럼을 하나 하나 추가 해서 해도 되는데 그렇게 하면 그룹바이는 되는데 또 오더 바이가 안되면서 아래와 같은 에러가 뜹니다.

#1055 - Expression #1 of ORDER BY clause is not in GROUP BY clause and contains nonaggregated column 'realestate.cat.groupnum' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by

그러니깐 지금 현상은 그룹바이가 되면
오더 바이가 안되고
오더바이가 되면
그룹바이가 안되는 현상이 벌어 집니다.

sql_mode=only_full_group_by
를 없애고 한번 해 보세요.
sql_query( "set sql_mode='' ");
// 조인 query 실행

SELECT u.*,  min(cat.groupnum) numby FROM nameTable u    JOIN MeberGroup cat ON u.jusocode = cat.jusocode
GROUP by u.name ORDER BY numby ASC

이렇게 해야 말이 되는 거 같습니다.

SELECT u.*,  min(cat.groupnum) numby FROM nameTable u    JOIN MeberGroup cat ON u.jusocode = cat.jusocode
GROUP by u.name ORDER BY numby ASC
이게 안 되면

select * from ( SELECT u.*,  min(cat.groupnum) numby FROM nameTable u    JOIN MeberGroup cat ON u.jusocode = cat.jusocode
GROUP by u.name ) AA  ORDER BY numby ASC
 이렇게 해 보세요.

답변을 작성하시기 전에 로그인 해주세요.
전체 123,614 | RSS
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT