묻고답하기
page_full_width" class="col-xs-12" |cond="$__Context->page_full_width">
XML 쿼리 결과 이상, JOIN 컬럼이 문자열로 인식
2010.07.30 22:49
XML 쿼리 결과 이상, JOIN 컬럼이 문자열로 인식되는 문제가 있습니다.
조인 조건으로 AND a.prd_srl = b.prd_srl 를 위해
<condition operation="equal" column="a.prd_srl" default="b.prd_srl" pipe="and"/>
과 같이 작성했음에도 결과에는 AND a.prd_srl = 'b.prd_srl' 와 같이 '문자열' 로 인식이 됩니다.
우측항이 계속 문자열로 인식되는 문제가 무엇인지 못 찾겠네요.
도움 바랍니다.
-- source
<query id="getorderlist" action="select">
<tables>
<table name="order" alias="a"/>
<table name="prd_list" alias="b"/>
</tables>
<columns>
<column name="a.order_srl" />
<column name="a.ord_no" />
<column name="b.prd_srl" />
</columns>
<conditions>
<condition operation="equal" column="a.module_srl" var="module_srl" filter="number" notnull="notnull" />
<condition operation="equal" column="a.prd_srl" default="b.prd_srl" pipe="and"/>
</conditions>
<navigation>
<index var="sort_index" default="module_srl" order="asc" />
<list_count var="list_count" default="20" />
<page_count var="page_count" default="10" />
<page var="page" default="1" />
</navigation>
</query>
SELECT a.order_srl,
a.ord_no,
b.prd_srl
FROM `xe_order` AS a,
`xe_prd_list` AS b
WHERE ( a.module_srl = '90057'
AND a.prd_srl = 'b.prd_srl' )
ORDER BY a.module_srl ASC
LIMIT 0, 20
두번 째 질문은 Array 사용입니다.
$output = executeQueryArray('order.getOrderList', $args);
$output의 결과물이 불규칙하게 정렬되어 있어(SQL는 불과하다는 가정하에)
컬럼의 Code 값을 기준으로 부모 자식 구조의 Array 에 담고 싶은데 방법을 모르겠네요
-- 데이터유형
code value seq ...
---------------------------
G a 11 --- 1번
C b 11 --- 2번
B c 22 --- 3번
B d 22 --- 4번
G b 11 --- 5번
B e 33 --- 6번
C a 11 --- 7번
..
Array1 = {1번, 5번}
Array2 = {2번, 7번}
Array3 = {3번, 4번, 6번}
ArrayAll = {Array1, Array2 Array3,,,,} 등으로 담아서 다시 출력 하려고합니다.
고맙습니다.
댓글 1
-
라르게덴
2010.07.31 00:52
-
tohappy
2010.07.31 01:01
filter="number" notnull="notnull" 넣어도 동일합니다. 이상한 것은 그 컬럼에 대해서만 증상이 나타납니다. <condition operation="equal" column="a.prd_srl" default="b.document_srl" pipe="and"/> 과 같이 다른 컬럼을 써 주어도 동일합니다. -
tohappy
2010.07.31 01:06
혹시 몰라 DB의 컬럼명을 전혀 다르게 변경해 주어도 마찬가지 입니다. -
라르게덴
2010.07.31 01:07
여기 리플 안보실가봐 쪽지보내드렸습니다. 스키마에 설정하신 prd_srl의 타입이 number인지 체크하세요. -
SMaker
2010.07.31 10:04
첫번째 경우는 저도 겪어봤는데요 아무래도 버그 같기도 싶고... -
라르게덴
2010.07.31 12:03
해당 모듈의 스키마폴더에 해당 테이블에 대한 스키마 정의가 없어서 그런걸로 판명나서 해결했습니다.
1번
filter="number" notnull="notnull" 이거 넣으셔도 마찬가지인가요?
2번
의미를 정화히 모르겠습니다.
위 예로 보면 3번 쿼리를 하면 될 것 같은데 code라는 수가 상당히 많을 경우 때문인가요?
일단 code로 정렬시켜서 출력시키시고요.
$arr = array();
$code = null;
foreach($output->data as $key=>$val)
{
if($code != $val->code) $code = $val->code;
$arr->{$code}[] = $val;
}
print_r($arr);
한번 해보세요. 테스트는 안해봤지만;