묻고답하기
위젯 쿼리를 xml로 변경하는것좀 봐주세요
2009.08.22 00:43
select xe_documents.*, xe_modules.module from xe_documents,xe_modules where xe_documents.module_srl=507 and xe_modules.module_srl=507;
이러한 쿼리입니다.
이걸 xml로 변경해보았는데요.;;
<query id="getNewestDocuments" action="select">
<tables>
<table name="documents" />
<table name="modules" />
</tables>
<columns>
<column name="documents.*" />
<column name="modules.module" />
</columns>
<conditions>
<condition operation="equal" column="documents.module_srl" var="module_srl" filter="number" pipe="and"/>
<condition operation="equal" column="modules.module_srl" var="module_srl" filter="number" />
</conditions>
<navigation>
<index var="sort_index" default="list_order" order="order_type" />
<list_count var="list_count" default="20" />
</navigation>
</query>
이렇게 변경을 했습니다. xml 부분에서 var="module_srl" 의 module_srl에 맨위의 쿼리의 48이 들어가는건데요..
이게 잘 동작을 안합니다.;;
그래서 디버그 프린트로 오브젝트 변수를 뿌려봤더니[error] => 1064
[message] => You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'modules.module_srl = 507) and list_order < 2100000000 order by list_order asc l' at line 1
[variables] => Array
(
[_query] => select documents.*,modules.module from `xe_documents` as documents,`xe_modules` as modules where (documents.module_srl = 507 modules.module_srl = 507) and list_order < 2100000000 order by list_order asc limit 5
[_elapsed_time] => 0.00026
이렇게 나오네요.;;
xml 을 어떻게 고쳐야 제대로 된 결과를 출력할수 있을까요??
고수님들 도와주세요
<condition operation="equal" column="documents.module_srl" default="modules.module_srl" />
<condition operation="equal" column="modules.module_srl" var="module_srl" filter="number" pipe="and" />
pipe attribute는 연결될 condition node에 있어야 합니다. 그리고 module_srl를 한번만 받는게 좋을 것 같습니다.