2013-06-17 2 views
0

mysql 쿼리를 작성하는 데 어려움을 겪고 있습니다. 나는 두 개의 테이블에서 데이터를 얻기 위해 필요
합계가있는 복잡한 관계형 mysql 쿼리

Table cash 
---------- 
id 
income_money 
cashdata_id 
paymentterm 

는 _

Table cash_data 
------------ 
id 
total 
user 
date 

그래서 cash_data 지불해야하는 지불을 보유하고 있으며 cash은 이미 처리 된 등록 지불을 보유하고 있습니다.
결제가 완료로 표시된 경우 cash_data에있는 관련 행은 user ID와 date으로 업데이트됩니다.
아이디어는 cash_data에서 질문을하고 어떤 수입이 지불되었지만 완료로 표시되지 않은 지급 (즉, userdate 필드 데이터가 없음)을 확인하는 것입니다.
좋아, 여기까지 간단했다. 내가 cash.income_moneycash.total을 비교해야하기 때문에 -
문제가 하나 cash_data 행에 관한 cash 여러 테이블 행 수와 나는 모든 cash_data 행을 선택하고 관계형 cash 행을 선택하고 cash.income_money 합계 할 수 있다는 것이다.

+0

는 sqlfiddle를 제공하는 것을 고려하라. – Strawberry

답변

0

쿼리 합산 돈을 : :이 또한 왼쪽 아직 지불을하지 않을 수 있습니다 행을 보여주기 위해 가입 사용

이처럼. 오히려 간단하다

SELECT cd.id, 
     cd.total, 
     sum(c.income_money) AS "Total Income" 
FROM cash_data cd 
LEFT JOIN cash c ON c.cashdata_id = cd.id 
GROUP BY cd.id, 
     cd.total; 

첫 번째 쿼리 :

select cd.id, cd.total, sum(c.income_money) as "Total Income" from 
cash_data cd left join cash c 
on c.cashdata_id = cd.id 
group by cd.id, cd.total; 

SQL 바이올린 : 아래의 답변이 문제가 해결되지 않았다면 http://www.sqlfiddle.com/#!2/800b4/6

0

두 테이블을 결합해야합니다.

SELECT SUM(cash.income_money), cash_data.total, cash_data.id 
FROM cash_data 
    JOIN cash ON cash.cashdata_id=cash_data.id 
+0

그룹별로 표시 안함 ... 모든 금액을 모두 합산합니다. 참조 : http://www.sqlfiddle.com/#!2/800b4/5 원래 SQL을 두 번째 쿼리로 포함합니다. –