-2

2 つの MYSQL テーブルから結果を取得するソリューションを探しています

最初のテーブルは次のとおりです: rate_table

`id` int(11) NOT NULL auto_increment,
`rate` float(5,4) NOT NULL,
`amount` float(12,2) NOT NULL,


INSERT INTO `rate_table` (`id`, `rate`, `amount`) VALUES
(1, 4.1555, 100),
(2, 4.1555, 100),
(3, 4.4444, 50),

2 番目のテーブル: trans_table

`id` int(11) NOT NULL auto_increment,
`amount` float(12,2) NOT NULL,
`rate_id` int(11) NOT NULL,

INSERT INTO `trans_table` (`id`,  `amount`, `rate_id`) VALUES
(1, 20, 1),
(2, 30, 1);

ここで、rate_table by rate_table.rate、sum rate_table.amount- sum trans_table.amountwhere trans_table.trade_id = rate_table.id....からのグループ結果が必要です。

したがって、上記の例では次の結果が得られます。

rate   |sum  | sum - sum second table
4.5555 | 200 | 150 |
4.4444 | 50  | 50  |
4

4 に答える 4

0
select rate_table.rate, SUM(rate_table.amount) as sum1,
COALESCE((SUM(rate_table.amount) - SUM(trans_table.amount)),
         SUM(rate_table.amount)) as sum2
from rate_table LEFT join trans_table on 
trans_table.rate_id = rate_table.id
group by rate_table.rate;

フィドル

于 2013-07-16T12:16:07.960 に答える
0
SELECT rate, ratesum , ratesum-IFNULL(transsum, 0) sum_minus_sum
FROM (SELECT rate, SUM(amount) ratesum
      FROM rate_table
      GROUP BY rate) r
LEFT JOIN
     (SELECT rate_id, SUM(amount) transsum
      FROM trans_table
      GROUP BY rate_id) t
ON r.rate = t.rate_id
于 2013-07-16T12:09:56.887 に答える