加入两个表并获得结果

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

我有两个表,如下所示:

tbl_main
----------------------------------
id | bucket | amount 
1  |  1     | 10
2  |  2     | 10
3  |  1     | 20
4  |  4     | 10
5  |  5     | 20
6  |  6     | 30
7  |  6+    | 50
8  |  3     | 30
9  |  5     | 50

和下面的另一个表

tbl_sub
----------------------------------
id | bucket | amount | status
1  |  1     | 10     |  1
2  |  1     | 10     |  1
3  |  1     | 20     |  1
4  |  4     | 10     |  2
5  |  5     | 20     |  1

我想使用存储桶将这两个表连接起来,并在表tbl_sub状态为1的位置得到两个表中每个存储桶的总和]

预期结果是

bucket | main_amount | sub_amount
-----------------------------------
 1     |      30     |     40       
 2     |      10     |      0       
 3     |      30     |      0      
 4     |      10     |      0      
 5     |      70     |     20      
 6     |      30     |      0     
 6+    |      50     |      0      

我不明白。我要去哪里了,这是我的查询

SELECT cl.bucket
     , SUM(cl.amount) as main_total
FROM `tbl_main` cl
    JOIN(SELECT bucket, SUM(amount)
         FROM `tbl_sub`
         WHERE status = '1'
         GROUP BY bucket) fl on cl.bucket = fl.bucket
 GROUP BY cl.bucket

这里的模式和相同的Db Fiddle链接

CREATE TABLE `tbl_main` ( `id` INT ,  `bucket` VARCHAR(5) ,  `amount` INT ,    PRIMARY KEY  (`id`));     

CREATE TABLE `tbl_sub` ( `id` INT  ,  `bucket` VARCHAR(5) ,  `amount` INT ,  `status` INT,    PRIMARY KEY  (`id`));


INSERT INTO `tbl_main` (`id`, `bucket`, `amount`) VALUES ('1', '1', '10'), ('2', '2', '10'), ('3','1', '20'), ('4', '4', '10'), ( '5','5', '20'), ( '6','6', '30'), ( '7','6+', '50'), ('8','3', '30'), ('9', '5', '50');


INSERT INTO `tbl_sub` (`id`, `bucket`, `amount`, `status`) VALUES ( '1','1', '10', '1'), ('2','1', '10', '1'), ('3','1', '20', '1'), ('4','4', '10', '2'), ('5','5', '20', '1');

我有两个表,如下所示:tbl_main ---------------------------------- id |桶|数量1 | 1 | 10 2 | 2 | 10 3 | 1 | 20 4 | 4 | 10 5 | 5 | 20 6 | 6 | 30 7 | ...

mysql group-by subquery jointable
2个回答
1
投票

尝试一下:


0
投票
© www.soinside.com 2019 - 2024. All rights reserved.