두 값의 합을 쿼리로 출력하고 싶습니다. 0 3 2,796

by 생각하쟈 [MySQL] sum 연관테이블 [2015.06.11 16:01:45]


연관테이블2.PNG (129,824Bytes)
연관테이블.PNG (73,226Bytes)

안녕하세요 선배님들 

제가 하고싶은것은

밑의 사진에서의 meta_key값이 bmc_sale_point 인놈의 meta_value의 값을 모두더하고

거기에 2번재 사진에서 보면 meta_key의 값이 bmc_exchange_point인 meta_value의 값을 

빼서 출력하는것을 하고 싶습니다

제가 이건 변수로 해야되나? 해서 변수를 하려고 하는데

여러가지 생각은 하고 있고 if 문을 사용해야 되나 라는 생각까지는 도달했으나 

어떤식으로 쿼리를 작성해야되는지 모르겠습니다 도와주십시요 감사합니다 선배님들

 

by 창조의날개 [2015.06.11 16:29:31]
-- 테이블이 다르다면
SELECT (SELECT SUM(meta_value) FROM TABLE_A WHERE meta_key = 'bmc_sale_point')
     - (SELECT SUM(meta_value) FROM TABLE_B WHERE meta_key = 'bmc_exchange_point') AS meta_value
FROM DUAL;
-- 테이블이 같다면
SELECT SUM(DECODE(meta_key,'bmc_sale_point',meta_value))
     - SUM(DECODE(meta_key,'bmc_exchange_point',meta_value))
FROM TABLE;

 


by 생각하쟈 [2015.06.11 16:33:58]

SELECT sum(if(b.meta_key='bmc_sale_point',b.meta_value,-(b.meta_value))) as eversum
 FROM bmc_postmeta as b
 where post_id in (select ID from bmc_posts where post_author=581) and (if(b.meta_key='bmc_sale_point','y','n')='y'
or if(b.meta_key='bmc_exchange_point','y','n')='y')

항상 감사합니다 진짜 

위처럼 해도 해결은 됫는데 이렇게 해도 무방할까요?


by 창조의날개 [2015.06.11 17:49:34]

네.. 그렇게 해도 좋겠네요..

WHERE 조건을 다음과 같이 바꾸면 좀더 심플할듯 하네요..



SELECT sum(if(b.meta_key='bmc_sale_point',b.meta_value,-(b.meta_value))) as eversum
 FROM bmc_posts A
     , bmc_postmeta as b
 where A.ID = B.post_id
   AND A.post_author=581
   and b.meta_key IN ('bmc_sale_point', 'bmc_exchange_point')

 

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입