我的表格如下所示:
产品
id title price
--------------------------------------
5 777 15
6 777 16
7 777 14
产品详情
id pid quantity color
--------------------------------------
1 5 5 red
2 5 5 yellow
3 5 5 green
4 6 6 yellow
5 6 5 red
6 7 5 red
7 7 4 pink
我想得到以下输出:
期望的结果
id title price numberofdetails quantity
------------------------------------------------------
5 777 15 3 15
6 777 16 2 11
7 777 14 2 9
为了得到这个,我正在运行以下 mysql 查询:
查询
SELECT p.id, p.title, p.price, COUNT(pd.id), SUM(pd.quantity)
FROM products as p
LEFT JOIN productdetails as pd
ON p.id = pd.pid
编写此查询时假设由于我已经定义了 products.id 和 Productdetails.pid 之间的关系,因此 COUNT(pd.id) = 3。它不是只计算匹配的行,而是显示“7”,行。如何修复我的查询以获得如上所示的所需结果。
最佳答案
你们已经很接近了。我认为你只需要GROUP BY
:
SELECT p.id, p.title, p.price, COUNT(pd.id), SUM(pd.quantity)
FROM products p LEFT JOIN
productdetails pd
ON p.id = pd.pid
GROUP BY p.id, p.title, p.price;
在大多数数据库中,您的查询将返回错误。但是,MySQL 扩展了 SQL 的定义,以允许 SELECT 中的列(例如 p.id )不在 GROUP BY 中。由于聚合函数,您有一个聚合查询。如果没有 GROUP BY
,它总是返回一行,汇总所有数据。
关于MySQL - 在左连接中使用不带Where的计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39723824/