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개
답변에 대한 댓글 1개
댓글을 작성하려면 로그인이 필요합니다.
에러를 보면 u.name 으로 그루핑이 되었지만 num_no 가 숫자이므로 sum, max, min 같은 집계함수를 쓰지 않으면 안된다는 뜻입니다.
근데 그거만 해결하면 다른 필드도 똑같은 문제가 있겠네요
u.* 으로 하지말고 u.name, max(u.num_no) num_no 로 일단 하면서 필요한 컬럼을 추가하세요
답변에 대한 댓글 6개
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
그러니깐 지금 현상은 그룹바이가 되면
오더 바이가 안되고
오더바이가 되면
그룹바이가 안되는 현상이 벌어 집니다.
그게 아니라면 정렬을 먼저하시고 그룹핑을 하시거나 하셔야 겠네요
mysql에 초보라서요 ^^;
를 없애고 한번 해 보세요.
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
이렇게 해야 말이 되는 거 같습니다.
엑스엠엘님이 올려 주신느것도 동작은 하지 않지만 좀더 찾아 보고 공부 해 보도록 하겠습니다 .^^;
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
이렇게 해 보세요.
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인
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 처럼 자동으로 증가 하는 넘버 필드 입니다.