[英]Count multiple results in MySQL query
基本上,我拥有的是评分系统。 1-5星,共4个类别。 我想做的是获得每个类别的结果计数。 例如:
Category 1: 20 1 star, 32 2 star, 40 3 star, 35 4 star, 19 5 star
...
Category 4: 10 1 star, 12 2 star, 45 3 star, 54 4 star, 2 5 star
我知道我只能执行20个查询,( SELECT COUNT(*) WHERE BizID=$id AND category1=1
/ SELECT COUNT(*) WHERE BizID=$id AND category1=2
...),但是我想知道是否有一种更有效的方法。 好像是我的点击量很大,或者收视率很高,这时脚本会变得很糟糕。 任何帮助,将不胜感激。
Table Structure
RateID - int(10)
UserID - varchar(8)
BizID - varchar(8)
Cat1 - int(1)
Cat2 - int(1)
Cat3 - int(1)
Cat4 - int(1)
Date - int(10)
您可以使用CASE语句在一张照片中按类别和星级来获得计数,如下所示:
SELECT
SUM
(
CASE
WHEN Cat1 = 1 THEN 1
ELSE 0
END
) Cat1_1,
SUM
(
CASE
WHEN Cat1 = 2 THEN 1
ELSE 0
END
) Cat1_2,
SUM
(
CASE
WHEN Cat1 = 3 THEN 1
ELSE 0
END
) Cat1_3,
SUM
(
CASE
WHEN Cat1 = 4 THEN 1
ELSE 0
END
) Cat1_4,
SUM
(
CASE
WHEN Cat1 = 5 THEN 1
ELSE 0
END
) Cat1_5,
SUM
(
CASE
WHEN Cat2 = 1 THEN 1
ELSE 0
END
) Cat2_1,
...
...
...
FROM mytable
WHERE BizID=$id;
试试这个:
<?php
$sql = "SELECT COUNT(BizID) WHERE BizID = " . $id . " AND category1 IN (1, 2, 3, 4, ...)";
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.