У меня есть две таблицы, как показано ниже:
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 столбец status равен 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');