기존 mysql 쿼리에서 사용하는 MAX, MIN을 대체하는 방법은 뭘까요?
아무리 검색해봐도 찾을수가 없네요.
-
아,, order_type으로 뽑는건 이해하고 있습니다만
그게,,, left_join으로 가져오는 것들 중 가장 큰 값 하나만 필요해서요..
제가 자세하게 글을 올리지 않았네요. 죄송합니다. -
그것도 아마 조인으로 가져오는 칼럼을 지정할 수 있어요.
https://github.com/rhymix/rhymix/blob/master/modules/document/queries/getDocumentListWithinExtraVars.xml
left조인으로 만들어지는건 아니지만 이런것처럼 order 타입자체를 특정 테이블의 칼럼에 지정할 수 있으므로 해당 방식대로 한다면 가능하지 않을까 생각이 듭니다. -
https://github.com/xpressengine/xe-module-profiler/blob/master/queries/getStatisticSlowlog.xml
이런식으로 칼럼에 min max 함수를 추가하여 사용할 수도 있습니다. -
^^ 잘 안되네요...
<query id="getModuleSrlByMenuSrl" action="select">
<tables>
<table name="modules" alias="modules" />
<table name="menu_item" alias="menu_item" type="left join">
<conditions>
<condition operation="equal" column="menu_item.url" default="modules.mid" />
</conditions>
</table>
<table name="documents" alias="documents" type="left join">
<conditions>
<condition operation="equal" column="documents.module_srl" default="modules.module_srl" />
</conditions>
</table>
</tables>
<columns>
<column name="modules.module_srl" />
<column name="modules.mid" />
<column name="modules.browser_title" />
<column name="menu_item.expand" />
<column name="documents.title" />
</columns>
<conditions>
<condition operation="equal" column="modules.menu_srl" var="menu_srl" />
<condition operation="equal" column="modules.module" var="module" pipe="and" />
<condition operation="equal" column="modules.site_srl" var="site_srl" pipe="and" />
</conditions>
</query>
현재 이 상태인데.. 모듈에 해당하는 document전체에서 가장 마지막 게시물 날짜 한개만 가져오고 싶은데 어렵네요
자체내에서 해결이 가능한지.. 아니면 별도로 다시 xml쿼리를 작성해야 하는지 알수가 없어서요. -
마지막 게시물 1개를 가져오는데 MAX, MIN이 왜 필요하지요? module_srl로 검색하고 regdate 역순으로 정렬해서 맨 처음 1개만 가져오면 되는 것 아닌가요? 굳이 여러 테이블을 join할 필요가 없어 보입니다.
그것과는 별도로, SQL에서 특정 조건을 만족하는 마지막 레코드에 해당하는 다른 무언가를 가져올 때는 대개 left join이 아닌 서브쿼리를 사용합니다.
order_type 을 바꿔주시면 될것 같습니다.
max 나 min은 일반적으로 최대치 최소치하나만을 가져오는 것이니, 그걸 응용해서
특정 쿼리를 order 타입을 어떤 숫자의 칼럼에 연결하여 asc(?) 또는 desc(?) 으로 잡아주시면 max min 값 순서대로 넘어오기 때문에 $output->data[0] 은 항상 최대치 혹은 최소치가 나올 수 있겠습니다.
e.g)
<navigation>
<index var="sort_index" default="list_order" order="order_type" />
<list_count var="list_count" default="1" />
</navigation>