查询SQL SUM仅对具有JOIN的重复值使用1个值

问题描述 投票:0回答:2

我对sql的查询再次遇到问题。

我有2张桌子。 “交易”表和“交易详细信息”表。

作为trx的交易

ID    TOTAL
1     2000
2     10000
3     5000

transactions_details as td

ID    trx_id     PRICE
1       1        2000
2       2        5000
3       2        5000
4       3        1000
5       3        2000
6       3        2000

当我这样查询时

select sum(trx.total) from transactions as trx
join transaction_details as td
on trx.id = td.trx_id

我有结果

37000

那不是我的意思。

因为当我将sum(trx.total)更改为trx。*

数据显示如下

ID    TOTAL
1     2000
2     10000
2     10000
3     5000
3     5000
3     5000

我想从该查询中获得结果17000

我知道我可以只对表transaction_detail的价格求和,或对交易总和而不用联接另一个表。但就我而言,我必须加入2个表和SUM。

请帮助我

mysql
2个回答
0
投票

您可以先汇总第二张表,然后再加入-

SELECT SUM(PRC)
FROM transactions T
JOIN (SELECT trx_id, SUM(PRICE) PRC
      FROM transactions_details
      GROUP BY trx_id) TD ON T.id = TD.trx_id

0
投票

在示例中的表结构中,看起来交易表存储了transaction_details表中的价格总计,因此从交易表中获取Sum(Total)应该足够了,除非您需要为每个交易获取总和。即使在这种情况下,交易表中的每个交易记录也应提供交易明细表中每个交易的总和。

© www.soinside.com 2019 - 2024. All rights reserved.