그룹 목록 뽑아서 정렬하기 정보
그룹 목록 뽑아서 정렬하기본문
도저히 혼자서는 해결이 안돼서 다시 질문 드립니다.
이렇게 했습니다.
$sql = " SELECT a.gr_id, a.gr_subject, b.mb_id FROM $g4[group_table] AS a LEFT JOIN $g4[group_member_table] AS b ON a.gr_id = b.gr_id WHERE (a.gr_use_access = '1') group by a.gr_id ORDER BY b.mb_id = '$member[mb_id]' desc, a.gr_id desc";
의도하는 바는... 그룹목록을 뽑아서 이렇게 나열하려고 합니다.
- 그룹접근을 사용하는 그룹이름만 뽑습니다. WHERE (a.gr_use_access = '1')
- 중복나열을 막기 위해 group by a.gr_id
- 자신이 그룹접근 해당 회원이라면 그 그룹을 우선 정렬 ORDER BY b.mb_id = '$member[mb_id]' desc
그런데 당연한 것이겠지만 마지막 우선정렬 조건에 문제가 있습니다. 자신이 해당되는 그룹만 우선정렬되는 것이 아니라 group_member_table에 아무 회원이든 포함되어 있는 그룹은 무조건 우선정렬됩니다. 해당회원이 속한 그룹이 아니더라도 말이죠.
어떻게 해야 제대로 나올까요.
이렇게 했습니다.
$sql = " SELECT a.gr_id, a.gr_subject, b.mb_id FROM $g4[group_table] AS a LEFT JOIN $g4[group_member_table] AS b ON a.gr_id = b.gr_id WHERE (a.gr_use_access = '1') group by a.gr_id ORDER BY b.mb_id = '$member[mb_id]' desc, a.gr_id desc";
의도하는 바는... 그룹목록을 뽑아서 이렇게 나열하려고 합니다.
- 그룹접근을 사용하는 그룹이름만 뽑습니다. WHERE (a.gr_use_access = '1')
- 중복나열을 막기 위해 group by a.gr_id
- 자신이 그룹접근 해당 회원이라면 그 그룹을 우선 정렬 ORDER BY b.mb_id = '$member[mb_id]' desc
그런데 당연한 것이겠지만 마지막 우선정렬 조건에 문제가 있습니다. 자신이 해당되는 그룹만 우선정렬되는 것이 아니라 group_member_table에 아무 회원이든 포함되어 있는 그룹은 무조건 우선정렬됩니다. 해당회원이 속한 그룹이 아니더라도 말이죠.
어떻게 해야 제대로 나올까요.
댓글 전체
또 자문자답이네요.^^
정렬에 조건을 걸어서 해결했습니다. 이렇게...
if(b.mb_id = '$member[mb_id]',0,1)
정렬에 조건을 걸어서 해결했습니다. 이렇게...
if(b.mb_id = '$member[mb_id]',0,1)