xml query 의 빈 SELECT 절
CMS/프레임워크 | Rhymix 2.1 |
---|---|
개발 언어 | PHP 7.4 |
# EXPLAIN
SELECT
SUM(`팔로워`) '팔로워',
SUM(`팔로잉`) - SUM(`친구`) '팔로잉',
SUM(`친구`) '친구'
FROM (
SELECT
SUM(CASE WHEN f.target_srl = m.member_srl THEN 1 ELSE 0 END) AS '팔로워',
SUM(CASE WHEN f.member_srl = m.member_srl THEN 1 ELSE 0 END) AS '팔로잉',
IF(COUNT(*) = 2, 1, 0) AS '친구'
FROM
(SELECT 2213491 AS `member_srl`) `m` # 여기만 하면 됩니다
LEFT JOIN `td_member_friend` `f`
ON
f.member_srl = m.member_srl OR f.target_srl = m.member_srl
GROUP BY
IF(f.member_srl > f.target_srl, f.target_srl, f.member_srl),
IF(f.member_srl < f.target_srl, f.target_srl, f.member_srl)
) `asd`;
위 쿼리를 rhymix xml 에서 구현코자 합니다.
다른건 다 잘 되는데 문제는 (SELECT 2213491 AS `member_srl`) `m` 입니다.
DBQueryParser.php 봐도 저는 잘 모르겠는데 아마도 안되겠죠?
<column name="member_srl" alias="member_srl" />
<column default="member_srl" alias="member_srl" />
<column var="member_srl" alias="member_srl" />
등..
댓글 6
그냥 $oDB 형태로 query 문을 직접 실행시키는 방법도 있긴합니다.
그런데 (SELECT 2213491 AS `member_srl`) 이 틀린듯한데요?
( 해당 부분이 말이 안 되는듯해서 2213491 이 칼럼인가요? )
그러나 select 도 안되고 where 도 안되네요.
<column name="2213491" alias="member_srl" />
이렇게는 안 되던가요?
물론 저 2213491이라는 숫자가 변수로 들어가야 한다면 곤란합니다.
컬럼명을 변수로 전달하는 문법은 없거든요.
이럴 때는 그냥 쿨하게 커스텀 쿼리 쓰시면 됩니다.^^
변수로 들어가야 해서요, 아쉽네요.
서브쿼리 안에 서브쿼리가 또 들어가 있는데.. 조금 풀어서 단순화해보시는 것이 어떨까요? 유지보수 부담은 차치하고, 쿼리 속도 면에서도 (아주 엄격한 atomicity가 필요한 것이 아니라면) 간단한 쿼리 2~3개로 나누는 편이 오히려 더 효율적일지도 모르겠습니다.
제안주셔서 감사하고 어떻게할지 고민이 필요하겠네요.