gpt4 book ai didi

mysql - MySQL中的成本总和

转载 作者:行者123 更新时间:2023-12-04 08:40:08 25 4
gpt4 key购买 nike

我有两个表,例如第一个有 id 和 name。
第二个有 id,通过 id 和 COST 链接到第一个表。

CREATE TABLE FIRST_TABLE (id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR (100));
CREATE TABLE SECOND_TABLE (id INT PRIMARY KEY, FIRST_TABLE_ID INT NOT NULL, cost DECIMAL(10,2),
FOREIGN KEY (FIRST_TABLE_ID) REFERENCES FIRST_TABLE (ID));


INSERT INTO FIRST_TABLE (NAME) VALUES
('ONE'),
('TWO'),
('THREE');

INSERT INTO SECOND_TABLE (ID, FIRST_TABLE_ID, COST) VALUES
(1, 1, 500),
(2, 2, 400),
(3, 3, 150),
(4, 1, 500),
(5, 2, 400),
(6, 3, 150);
如何获得取决于 NAME(第一个表)的元素 COST(第二个表)的总和?
我试图做的事情:
select FIRST_TABLE.NAME, sum(SECOND_TABLE.COST) TOTAL_COST
from FIRST_TABLE
left join SECOND_TABLE on FIRST_TABLE_ID = SECOND_TABLE.ID
group by FIRST_TABLE.ID
问题是:
我只有不规则的总费用 - 每个 NAME 1050。
一 - 1050
二 - 1050
三 - 1050
如何获得每个 NAME 的真实值?
如果我有三张 table ,对于第一张 table ,我必须得到第二张 table 和第三张 table 的总和,那会是什么样子?

最佳答案

这里:

from FIRST_TABLE
left join SECOND_TABLE on FIRST_TABLE_ID = SECOND_TABLE.ID
连接条件实际上相当于:
on SECOND_TABLE.FIRST_TABLE_ID = SECOND_TABLE.ID
等式的两个操作数都与同一个表相关。这不是你想要的。相反,使用:
select FIRST_TABLE.NAME, sum(SECOND_TABLE.COST) TOTAL_COST
from FIRST_TABLE
left join SECOND_TABLE on SECOND_TABLE.FIRST_TABLE_ID = FIRST_TABLE.ID
group by FIRST_TABLE.ID
我还建议使用表别名来缩短查询并使其更具可读性:
select t1.NAME, sum(t2.COST) TOTAL_COST
from FIRST_TABLE t1
left join SECOND_TABLE t2 on t2.FIRST_TABLE_ID = t1.ID
group by t1.ID

关于mysql - MySQL中的成本总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64613096/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com