Mysql 我怎样才能得到某一特定项目的总花费?
我有两张表(项目表和价格表) 项目表Mysql 我怎样才能得到某一特定项目的总花费?,mysql,Mysql,我有两张表(项目表和价格表) 项目表 itemId name 1 car 2 boat 3 horse 4 goat 5 book 价格表 id ItemId Amount Quantity 1 1
itemId name
1 car
2 boat
3 horse
4 goat
5 book
价格表
id ItemId Amount Quantity
1 1 200 2
2 1 90 1
3 1 230 4
4 2 300 6
5 2 120 2
我想知道在某一特定项目上花费的总金额是多少。基本上,我想对每个项目的金额列上的数据求和
我写了这个查询,但是我不能得到我想要的结果
SELECT items.name, SUM(price.amount) FROM items
LEFT JOIN price ON price.itemId = items.itemId
这就是我想要的
id ItemId Amount
1 1 520
2 2 420
谢谢大家,Ethan Graybeal的回答帮我解决了问题。我很感激
from price
join items on price.itemId = items.itemId
group by price.itemId
;```
使用聚合函数(SUM()
)和groupby
对结果集进行分组
SELECT items.itemId,
SUM(price.amount) AS `Total`
FROM items
INNER JOIN price
USING (itemId)
GROUP BY itemId;
您还可以按名称获取项目
SELECT items.name,
SUM(price.amount) AS `Total`
FROM items
INNER JOIN price
USING (itemId)
GROUP BY items.name;
使用按价格分组。itemId
将项目分组在一起,并求和(金额)
这是我用来测试的桌子
CREATE TABLE price
(`id` varchar(255), `itemId` varchar(255), `amount` varchar(10))
;
INSERT INTO price
(`id`, `itemId`, `amount`)
VALUES
(1, 1, 100),
(2, 2, 75),
(3, 1, 80),
(4, 2, 110),
(5, 3, 56),
(6, 4, 29),
(7, 4, 72)
;
create table items
(`itemId` varchar(255), `name` varchar(255));
insert into items
(`itemId`, `name`)
values
(1, 'car'),
(2, 'boat'),
(3, 'horse') ,
(4, 'goat') ,
(5, 'book');
导致
+------+-----------+-----+
|itemId|sum(amount)| name|
+------+-----------+-----+
| 1 | 180 | car|
+------+-----------+-----+
| 2 | 185 | boat|
+------+-----------+-----+
| 3 | 56 |horse|
+------+-----------+-----+
| 4 | 101 | goat|
+------+-----------+-----+
为什么
itemid
2
的id
等于2
?itemid
为2
的行中没有一行的id
为2
。您在结果中还需要什么id
?为什么您只显示一个表,但在尝试与另一个表联接时却显示了一个表?您选择了items.name,但您说需要ItemId和id,您的意思是id应该显示秩?加入的目的是什么?好的,让我补充一下,另一张表我已经更新了这个问题如果你能为你的回答提供一些解释会更好谢谢<代码>选择price.itemId、sum(amount)、price.itemId=items.itemId按price.itemId分组的price join items名称代码>成功了
+------+-----------+-----+
|itemId|sum(amount)| name|
+------+-----------+-----+
| 1 | 180 | car|
+------+-----------+-----+
| 2 | 185 | boat|
+------+-----------+-----+
| 3 | 56 |horse|
+------+-----------+-----+
| 4 | 101 | goat|
+------+-----------+-----+