2016-08-25 91 views
0

我正在使用sql的php。我在数据库中有一个teachers_rating表我想获得评级,比如有多少个成员给5等级,只有4,就像3,就像这样...我用这个sql查询检查一次。如何在单个查询中使用多个条件编写多个select语句?

SELECT COUNT(teachers_rating.rating) AS fivestar 
    FROM teachers_rating 
    WHERE rating = '5' and id='23' 
    UNION 
    SELECT COUNT(teachers_rating.rating) AS fourstar 
    FROM teachers_rating 
    WHERE rating = '4'and id='23' 
    UNION 
    SELECT COUNT(teachers_rating.rating) AS threestar 
    FROM teachers_rating 
    WHERE rating = '3'and id='23' 

like that its running but out output is 
fivestar  
18 
14 
20 

but iwant this type of structure 
fivestar fourstar threestar 
18   14   20 

如果有人知道请帮助我。

回答

0

这就是所谓有条件聚集:

SELECT COUNT(CASE WHEN t.rating =5 THEN 1 END) as five, 
     COUNT(CASE WHEN t.rating =4 THEN 1 END) as four, 
     COUNT(CASE WHEN t.rating =3 THEN 1 END) as three 
FROM teachers_rating t 
WHERE t.id = '23' 

如果你想它的动态所有IDs

SELECT t.id, 
     COUNT(CASE WHEN t.rating =5 THEN 1 END) as five, 
     COUNT(CASE WHEN t.rating =4 THEN 1 END) as four, 
     COUNT(CASE WHEN t.rating =3 THEN 1 END) as three 
FROM teachers_rating t 
GROUP BY t.id 
+0

不错的老板它的工作很好,非常感谢你。 – mahesh

0

试试这个。

Select SUM(if(rating = '5',1,0) as fivestar,SUM(if(rating = '4',1,0) as fourstar,SUM(if(rating = '3',1,0) as threestar FROM teachers_rating where id='23' 
0

在最简单的形式,你应该能够使用:

SELECT(SELECT ...)as fivestar,(SELECT ...)AS fourstar,(SELECT ...)AS三星