포럼
group by를 사용하는 쿼리에서의 와일드 카드 사용
2015.04.15 15:30
xe에서 기본으로 사용하는 쿼리중 group by를 사용하면서 컬럼에 와일드 카드를 사용하는 경우가 종종 있습니다.
해당 쿼리의 파일 목록을 뽑으면 대략 아래 정도구요
./modules/document/queries/getDocumentListWithExtraVars.xml
./modules/member/queries/getMemberListWithinGroup.xml
./modules/member/queries/getSiteMemberList.xml
./modules/module/queries/getLangNameByValue.xml
./modules/module/queries/getModuleListByInstance.xml
getModuleListByInstance의 예를들면 아래와 같은 쿼리인데...
> SELECT *, count(module_srl) as instanceCount FROM xe_modules WHERE site_srl = 0 GROUP BY module
이 쿼리를 사용할경우 mysql상에서는 문제없이 작동하지만 mssql상에서는 오류가 발생합니다.
mysql상에서는 집계함수나 group by절에 없는 컬럼이라도 첫번째 레코드의 값을 그냥 출력해 줘서 오류없이 쿼리가 수행됩니다만 이런 의미없는 값을 얻기위해 와일드 카드를 사용하기 보다는 다른 db에서의 정확한 작동을 위해서라도 필요한 컬럼을 명확하게 지정하는 쿼리를 작성하는게 필요해 보입니다.
댓글 3
-
YJSoft
2015.04.15 15:42
-
prologos
2015.04.15 17:27
이슈로 올렸습니다 @.@
-
기진곰
2015.04.15 17:34
몇 년 전에도 GROUP BY 문법 때문에 PostgreSQL에서 에러가 발생했었는데... 그 후 아예 PostgreSQL을 지원하지 않게 되어버리면서 저는 더이상 신경쓰지 않았습니다만, SELECT DISTINCT로 구현해야 할 것을 GROUP BY로 구현한 경우가 꽤 많았던 것으로 기억합니다.
XE가 공식적으로는 여러가지 DBMS를 지원하고 있지만, MySQL/MariaDB 외에는 사실상 서자 취급당한다고 봐도 무방합니다. 개발자들도 대부분 MySQL/MariaDB를 사용하고, 사용자 수 역시 압도적으로 많기 때문에 다른 DBMS들은 제대로 테스트조차 되지 않고 있습니다.
https://github.com/xpressengine/xe-core/issues
이슈로 올려 주세요