带和的复杂关系mysql查询

时间:2013-06-17 15:33:21

标签: mysql database join sum

我正在努力构建一个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表行与一个cash_data行相关,我必须选择所有cash_data行,然后选择关系cash行和总和cash.income_money - 因为我需要将cash.totalcash.income_money进行比较。

2 个答案:

答案 0 :(得分:0)

您需要加入这两个表。像这样:

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

答案 1 :(得分: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