Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 我怎样才能得到某一特定项目的总花费?_Mysql - Fatal编程技术网

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|
+------+-----------+-----+