@날아라님 의 광고클릭 모듈의 회원 실적(포인트획득)을 랭킹으로 보여주는데 사용 하는 쿼리가 아래와 같을 것 같습니다.
<query id="select_stat_point" action="select">
<tables>
<table name="adclick_log" />
</tables>
<columns>
<column name="*" />
<column name="sum(point)" alias="sum_point" />
<column name="count(member_srl)" alias="count_member_srl" />
</columns>
<conditions>
<condition operation="more" column="regdate" var="regdate_more" pipe="and" />
<condition operation="less" column="regdate" var="regdate_less" pipe="and" />
</conditions>
<groups>
<group column="member_srl" />
</groups>
<navigation>
<index var="sort_index" default="sum_point" order="order_type" />
<list_count var="list_count" default="20" />
<page_count var="page_count" default="10" />
<page var="page" default="1" />
</navigation>
</query>
그런데 탈퇴한 회원의 경우도 표시가 되는 문제가 있습니다. member 테이블에 없는 회원번호의 경우 제외하려고 하면 어떻게 추가해야 하는지 알려주시면 감사하겠습니다.
이런 식으로 해주시면 될 것 같습니다. 직접 테스트해 보지는 않았습니다.
비슷한 경우에 다른 분들에게도 도움이 될 수 있도록 자세히 설명해 보겠습니다.
빨간색 부분:
- 회원 테이블을 참조하여
- member_srl 값이 일치하는 데이터만 선택하도록 합니다.
파란색 부분:
- 참조하는 테이블이 2개가 되면 어느 컬럼이 어느 테이블 소속인지 분명히 밝혀야 합니다. 회원 테이블에도 member_srl, regdate 등 똑같은 이름의 컬럼이 있으니까요.
- 따라서 기존의 컬럼 이름 앞에 adclick_log. 를 하나씩 붙여주어 혼동이 발생하지 않도록 합니다.
이렇게 하면 존재하지 않는 회원을 제외하는 효과도 있고, <columns> 부분에서 닉네임 등 회원정보를 한꺼번에 불러와서 표시하는 기능을 구현할 수도 있습니다. 반면, 커뮤니케이션 모듈에서 탈퇴한 회원과 주고받은 쪽지가 증발하는 버그의 원인이기도 합니다 ㅋㅋㅋ
드디어 웹지기님도 JOIN의 막강한 파워를 사용하기 시작하시는군요 ㄷㄷㄷ
<query id="select_stat_point" action="select">
<tables>
<table name="adclick_log" />
<table name="member" />
</tables>
<columns>
<column name="adclick_log.*" />
<column name="sum(adclick_log.point)" alias="sum_point" />
<column name="count(adclick_log.member_srl)" alias="count_member_srl" />
</columns>
<conditions>
<condition operation="more" column="adclick_log.regdate" var="regdate_more" pipe="and" />
<condition operation="less" column="adclick_log.regdate" var="regdate_less" pipe="and" />
<condition operation="equal" column="adclick_log.member_srl" default="member.member_srl" pipe="and" />
</conditions>
<groups>
<group column="adclick_log.member_srl" />
</groups>
<navigation>
<index var="sort_index" default="sum_point" order="order_type" />
<list_count var="list_count" default="20" />
<page_count var="page_count" default="10" />
<page var="page" default="1" />
</navigation>
</query>