xml query 의 빈 SELECT 절

Extra Form
PHP PHP 7.4
CMS Rhymix 2.1

# 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" />

 

등..

  • ?
    XE 나 라이믹스 query 로 안 되면
    그냥 $oDB 형태로 query 문을 직접 실행시키는 방법도 있긴합니다.

    그런데 (SELECT 2213491 AS `member_srl`) 이 틀린듯한데요?
    ( 해당 부분이 말이 안 되는듯해서 2213491 이 칼럼인가요? )
  • ? ?
    보통은 where 절에 변수 넣지만, 위 쿼리를 xml 형식으로 쓰려니 꼼수로 select 절에 변수를 넣으면 될거라고 생각했습니다.
    그러나 select 도 안되고 where 도 안되네요.
  • profile

    <column name="2213491" alias="member_srl" />

    이렇게는 안 되던가요?

     

    물론 저 2213491이라는 숫자가 변수로 들어가야 한다면 곤란합니다.

    컬럼명을 변수로 전달하는 문법은 없거든요.

    이럴 때는 그냥 쿨하게 커스텀 쿼리 쓰시면 됩니다.^^

  • profile ?
    답변 고맙습니다.
    변수로 들어가야 해서요, 아쉽네요.
  • ? profile

    서브쿼리 안에 서브쿼리가 또 들어가 있는데.. 조금 풀어서 단순화해보시는 것이 어떨까요? 유지보수 부담은 차치하고, 쿼리 속도 면에서도 (아주 엄격한 atomicity가 필요한 것이 아니라면) 간단한 쿼리 2~3개로 나누는 편이 오히려 더 효율적일지도 모르겠습니다.

  • profile ?
    네, sum count 한번에 안 되니 쿼리가 저렇게 되었습니다.
    제안주셔서 감사하고 어떻게할지 고민이 필요하겠네요.