繁体   English   中英

在MySQL查询中计算多个结果

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM