묻고답하기
XML 쿼리문 작성 좀 도와주세요. ㅠ.ㅜ
2018.06.14 01:09
SQL 쿼리는 작성을 했는데, 이걸 XML 쿼리로 바꾸려니 어떻게 해야할지 모르겠네요.
select doc.module_srl, doc.module_srl, doc.category_srl, doc.title, doc.nick_name, ex_v1.value, ex_v2.value
from cam_documents doc
inner join cam_document_extra_vars ex_v1 on doc.document_srl = ex_v1.document_srl
inner join cam_document_extra_vars ex_v2 on ex_v1.document_srl = ex_v2.document_srl
WHERE ex_v1.var_idx = 6 and ex_v1.value > ka and ex_v1.value < ja and
ex_v2.var_idx = 7 and ex_v2.value > da and ex_v2.value < ia
GROUP BY ex_v1.document_srl
아래처럼 해 봤는데, 동작을 안 합니다. XML 쿼리에 아직 익숙치 않아서, 조금만 복잡해져도 잘 모르겠네요. 사실 SQL도 익숙치 않아서 위의 쿼리가 최선인지는 모르겠습니다. 원하는 결과는 나오는데...
<query id="getPinnedPlaces" action="select">
<tables>
<table>
<table name="documents" alias="doc" />
</table>
<table name="document_extra_vars" alias="ex_v1" type="inner join">
<conditions>
<condition operation="equal" column="ex_v1.document_srl" default="doc.document_srl" />
</conditions>
</table>
<table name="document_extra_vars" alias="ex_v2" type="inner join">
<conditions>
<condition operation="equal" column="ex_v2.document_srl" default="ex_v1.document_srl" />
</conditions>
</table>
<conditions>
<condition operation="equal" column="ex_v1.var_idx" default="6" />
<condition operation="excess" column="ex_v1.var_idx" var="ka" notnull="notnull" pipe="and" />
<condition operation="below" column="ex_v1.var_idx" var="ja" notnull="notnull" pipe="and" />
<condition operation="equal" column="ex_v2.var_idx" default="7" pipe="and" />
<condition operation="excess" column="ex_v2.var_idx" var="da" notnull="notnull" pipe="and" />
<condition operation="below" column="ex_v2.var_idx" var="ia" notnull="notnull" pipe="and" />
</conditions>
<groups>
<group column="GroupBy ex_v1.document_srl" />
</groups>
</tables>
<columns>
<column name="doc.module_srl" alias="module_srl" />
<column name="doc.member_srl" alias="member_srl" />
<column name="doc.category_srl" alias="category_srl" />
<column name="doc.title" alias="title" />
<column name="doc.nick_name" alias="nick_name" />
<column name="ex_v1.value" alias="lat" />
<column name="ex_v2.value" alias="lng" />
</columns>
</query>
댓글 2
-
sejin7940
2018.06.14 13:17
-
큰돌♡
2018.06.19 15:09
답변 고맙습니다. XML 쿼리에서 기본적인 join은 되는데, 조금 복잡하게 테이블 세 개를 join하는 형태로 하니 해석을 못하는 것 같더군요. 다른 방법을 써서 해결했습니다.
join 의 예시는
documents/queries/getDocumentListWithExtraVars.xml 파일
documents/queries/getDocumentListWithinExtraVarsExtraSort.xml 파일
members/queries/getMemberListWithinGroup.xml 파일
LEFT JOIN 은 이런형태로도 하고요
documents/queries/getDocumentsExtraVars.xml 파일
등을 참조하시면 이해가 될거예요 ^^