조인 쿼리 문의 (구독 모듈 위젯)
CMS/프레임워크 | Rhymix 1.9 |
---|---|
개발 언어 | PHP 7.2 |
<query id="getMemberRank" action="select">
<tables>
<table name="member_follow"/>
<table name="member" type="left join">
<conditions>
<condition operation="equal" column="member_follow.target_srl" default="member.member_srl" notnull="notnull" pipe="and"/>
</conditions>
</table>
</tables>
<columns>
<column name="member_follow.target_srl" alias="target_srl" />
<column name="member.nick_name" alias="target_nick_name" />
<column name="member.user_id" alias="user_id" />
<column name="member.regdate" alias="regdate" />
<column name="member.last_login" alias="last_login" />
<column name="count(member_follow.target_srl)" alias="cnt"/>
</columns>
<conditions>
<condition operation="more" column="member_follow.regdate" var="limit_date" />
<condition operation="notin" column="member_follow.target_srl" var="ban_srl" pipe="and" />
<condition operation="notnull" column="member.member_srl" pipe="and" />
</conditions>
<groups>
<group column="member_follow.target_srl" />
</groups>
<navigation>
<index var="sort_index" default="cnt" order="desc" />
<list_count var="list_count" default="5" />
<page_count var="page_count" default="5" />
<page var="page" default="1" />
</navigation>
</query>
위와 같은 쿼리가 있습니다.
현재 휴면회원으로 인한 문제가 발생하고 있는데요. 현재 붉은색으로 표시해 드린 부분인 member_follow.target_srl 이 회원번호가 멤버테이블에 회원번호와 일치하는지 확인해서 일치(존재?) 한다면 포함시키는 조건이 걸려있는 듯 합니다.
그런데 문제가 되는 부분은 파란색으로 표시해 드린 부분입니다.
<column name="count(member_follow.target_srl)" alias="cnt"/>
순위를 산정하기위한 member_follow.target_srl 를 카운트 하고 있는데요. 여기서 제외되어야할 대상이 있습니다.
member_follow 테이블에 member_srl 의 칼럼도 있는데 이 회원번호 중 "휴면회원" 은 제외를 하고 카운트를 해야 합니다. 그러니까 member_follow.member_srl 도 회원테이블에 있는 회원번호만 참조가 되어서 목록에 반영되어야 하는 상황인데 이게 빠져 있어서 문제가 됩니다.
<tables>
<table name="member_follow"/>
<table name="member" type="left join">
<conditions>
<condition operation="equal" column="member_follow.target_srl" default="member.member_srl" notnull="notnull" pipe="and"/>
<condition operation="equal" column="member_follow.member_srl" default="member.member_srl" notnull="notnull" pipe="and"/>
</conditions>
</table>
</tables>
위와 같이 파란색 부분을 추가해 야 하는 것인지아니면 다른 조치가 필요한건지 궁금합니다.
그런데 실제 쿼리는 위 쿼리파일을 이용하지 않고 php에 작성되어 있습니다.
$wdmf_sql = "SELECT member_follow.target_srl as target_srl, member.nick_name as target_nick_name, member.user_id as user_id, member.regdate as regdate, member.last_login as last_login, count(member_follow.target_srl) as cnt FROM ".$am_db_prefix."member_follow as member_follow left join ".$am_db_prefix."member as member on member_follow.target_srl = member.member_srl WHERE 1 AND member.member_srl IS NOT NULL ".$login_target_sql.$ban_sql.$date_sql." GROUP BY member_follow.target_srl ".$having_sql." ORDER BY ".$order_sql." LIMIT 0, ".$wargs->list_count;
현재 작성되어 있는 것은 굵게 표시한 부분인 것 같습니다. 추가를 해야 한다면 이 php 파일에 추가를 해야 하는 상황입니다.
댓글 0