嗨,我有两张桌子,一张是产品,另一张是价目表。
产品表
Id Name
1 Bike
2 Car
3 Van
价格表
Id Price Pid
1 100 1
2 150 1
3 200 1
4 100 2
5 110 2
6 120 2
7 300 3
8 310 3
我的Sql查询
$sql = "SELECT SUM(CASE WHEN price >= 0 AND price <= 200 THEN 1 ELSE 0 END) AS `0-2`,
SUM(CASE WHEN price >= 201 AND price <= 500 THEN 1 ELSE 0 END) AS `2-5`,
COUNT(pid) AS `All Values`
FROM price where pid IN(1,2,3)";
运行此查询时,价格计数值如下所示
0-2有(6)计数2-5有(2)计数
但在这里我需要像这样展示。在这里,我希望显示为0-200匹配的两个产品,即1,2 pids等0-2 (2)计数2-5 (1)计数。
因为在价格表中,产品有更多的价格选择,所以每个产品在表中都有2到5个不同的价格,但是我应该把它显示为一个产品的数量,甚至更多的价格。
请告诉我如何编写mysql查询。
我很感谢你的帮助。
发布于 2015-01-26 12:28:16
您可以使用COUNT(DISTINCT CASE ..)
,在THEN
子句中使用pid
代替1
SELECT
COUNT(DISTINCT CASE WHEN price >= 0 AND price <= 200 THEN pid END) AS `0-2`,
COUNT(DISTINCT CASE WHEN price >= 201 AND price <= 500 THEN pid END) AS `2-5`,
COUNT(DISTINCT pid) AS `All Values`
FROM price
WHERE pid IN(1,2,3)
DEMO
https://stackoverflow.com/questions/28149835
复制相似问题