포럼
XML 쿼리 mysql 내장함수 사용은....
2013.05.29 18:45
안녕하세요.
답을 찾을수 없어 여기에 올려 봅니다. XE매뉴얼에도 찾을 수가 없네요.
질문답변게시판에서도 관련 답은 얻을수 없었습니다. ㅜㅜ
XE에서 XML 쿼리 작성시 XE에서 제공하는 함수외에 mysql 내장함수 사용은 불가능 한가요?
현재 데이터 정렬이 제대로 되지않아 CAST() 형변환함수를 사용해볼려고 하는데
XML 쿼리를 어떻게 만들어야 할지 난감합니다.
아니면 이렇게...
SELECT * FROM sample
ORDER BY(substring_index(name, ' ', -1) + 0)
mysql 내장함수 사용이 가능하다면 어떻게 사용하고 계시는지요?
방법좀 알려주세요 ㅠㅠ
댓글 6
-
푸시아
2013.05.30 14:41
-
B.G.M^^
2013.05.30 18:54
모듈은 개발되어 있는데요 필요로 하는 데이터 정렬 형식으로 데이터를 뽑을려고 하니
MYSQL 내장함수를 사용해야할것 같은데 잘 안되네요
숫자와 문자로 조합 되어 있는 필드를 정렬해야 하는데
정렬이 제대로 안됩니다.
그래서 아래처럼 쿼리를 날리면
제가 원하는대로 정렬이 잘 됩니다.
SELECT * FROM sample
ORDER BY(substring_index(name, ' ', -1) + 0)
이처럼 데이터 정렬 결과가 나오게
XML쿼리를 만들수는 없는지요?
-
푸시아
2013.05.30 19:24
꼭 xml 형태로 쿼리할 이유는 없습니다. php 형태로 쿼리해도 됩니다.
-
B.G.M^^
2013.05.30 20:05
네 푸시아님 답변 감사드립니다.
XE에서 제공하는 XML 형식으로 적용되면 좋을텐데...
디테일한 부분까지 적용하기에는 무리인가 봅니다
-
라르게덴
2013.05.30 21:40
XE(PHP문)에서 XML Query 호출
$args->s_substring_index = "(substring_index(name, ' ', -1) + 0)";
$output = executeQuery('modulename.getSample', $args, $columnList);XML Query문
<query id="getSample" action="select">
<tables>
<table name="sample" />
</tables>
<columns>
<column name="*" />
</columns>
<conditions />
<navigation>
<index var="sort_index" order="s_substring_index" />
</navigation>
</query>debugPrint() 결과
Object Object
(
[error] => 1054
[message] => Unknown column 'name' in 'order clause'
[variables] => Array
(
[_query] => SELECT * FROM `xe_multidomain` as `multidomain` ORDER BY (substring_index(name, ' ', -1) + 0)
[_elapsed_time] => 0.00018
)
[httpStatusCode] =>
)
order by 뒤라서 XML Query상에서는 동작이 안되었고 PHP문에서 호출을 받을때 해당 SQL함수를 사용한 명령을 우선 수행하고 그 변수명을 XML Query에서 호출했더니 됐습니다. 위 debugPrint() 결과에나온 에러는 제 DB에는 예제의 컬럼이 없기 때문이지 함수변환자체는 문제없었습니다. 참고로 저는 아래와 같은식으로도 사용했습니다.nmsXE 모듈 중..
<query id="getNmsSnmpStats1hour" action="select">
<tables>
<table name="nms_snmp_log" />
</tables>
<columns>
<column name="module_srl" />
<column name="mib_srl" />
<column name="floor(sum(value)/count(value))" alias="value" />
<column name="substr(regdate,1,14)" alias="regdate" />
</columns>
<conditions>
<condition operation="equal" column="mib_srl" var="mib_srl" filter="number" notnull="notnull" pipe="where" />
<condition operation="less" column="regdate" var="regdate" filter="number" notnull="notnull" pipe="and" />
</conditions>
<groups>
<group column="module_srl" />
<group column="mib_srl" />
<group column="floor((substr(regdate,1,14)/100)*8)" />
</groups>
<navigation>
<index var="sort_index" default="snmp_srl" order="desc" />
<list_count var="list_count" default="240" />
</navigation>
</query> -
B.G.M^^
2013.05.31 00:55
라르게덴님 답변 감사드립니다.
막혔던 생각이 뻥하고 뚫리는 기분입니다.
정말 감탄 안할 수가 없네요
덕분에 XE DB 컨트롤이 더 자유로워 질것 같습니다.
라르게덴님, 푸시아님 소중한 시간 할애해 주셔서 다시 한번 감사의 말씀 드립니다.
감사합니다.
모듈을 만들고 싶으신건가요?