您好我有两张桌子,一张是产品,下一张是价格表
产品表
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查询。
感谢您的帮助。
答案 0 :(得分:2)
您可以使用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)