1. 2014. 3. 26. 06:48 개발자료/W3C
보통 이러한 쿼리를 쓰곤 한다
알아듣기 쉬우라고 최적화는 커녕 그냥 달아놓은 코드

SELECT `col1`,`col2` FROM `table` WHERE `col1`='field'

테이블1과 테이블2 에서 아이디별로 지급과 회수의 합을 출력
SELECT a.`id`, (SELECT SUM(IF(b.`type`='지급',b.`value`,0)), SUM(IF(b.`type`='회수',b.`value`,0) FROM `table1` b WHERE a.`id`=b.`id`) `table` a WHERE 1)

테이블1과 테이블2 에서 아이디별로 지급과 회수의 합을 출력
SELECT a.`id`,SUM(IF(b.`type`='지급',b.`value`,0)), SUM(IF(b.`type`='회수',b.`value`,0) FROM `table` a LEFT JOIN `table1` b ON a.`id`=b.`id` GROUB BY a.`id`
( 추가로 이 코드를 적용하면 NULL 제외 )
HAVING SUM(b.`value`)>0

역시나 알아듣기를 위한 코드이기 때문에 직접 작성하여 테스트 하길 바랍니다
LEFT JOIN ~ ON ~ ( 은 중복해서 사용 가능 ) LEFT JOIN ~ ON ~ LEFT JOIN ~ ON ~ WHERE ~

귀찮음작렬한 테이블 내용의 난해함이 있음으로 테이블을 첨가 해두었습니다
매우 좋은 코드이니 이런 쿼리문 필요없다 라는 생각은 버리는게 좋겠군요 ( 서브쿼리로 구현한다면 복잡함의 속박이 걸립니다  )

테이블1 table
칼럼 id, date
벨류 test1, 1000-10-10
벨류 test2, 1000-10-10

테이블2 table1
칼럼 id, type, value
벨류 test1, 지급, 1000
벨류 test2, 회수, 2000

쿼리 반환
id, type, value
test1, 1000, 0
test2, 0, 2000


Posted by Nightly Luna
,
® © Tanny Tales
/ rss