PHP MySQL获得前五名的最高结果。?
有一个民意调查表,其中有10个类别,我想查看前5名的结果从最高到最低的限制分为5个类别。如何在php和mysql中实现这一点 下面是示例表 类别PHP MySQL获得前五名的最高结果。?,php,sql,mysql,Php,Sql,Mysql,有一个民意调查表,其中有10个类别,我想查看前5名的结果从最高到最低的限制分为5个类别。如何在php和mysql中实现这一点 下面是示例表 类别 身份证 类别名称 投票 身份证 类别识别码 用户id 使用者 身份证 用户名 以下是我的示例查询: $q = mysql_query("SELECT * from categories"); while($data = mysql_fetch_array($q){ $votes = mysql_query("SELECT * from
- 身份证
- 类别名称
- 身份证
- 类别识别码
- 用户id
- 身份证
- 用户名
$q = mysql_query("SELECT * from categories");
while($data = mysql_fetch_array($q){
$votes = mysql_query("SELECT * from votes where category_id=".$data['id']."");
$data_vote = mysql_nuw_rows($votes);
echo $data['category_name']."has".$data_vote."Votes";
}
我希望我的输出是这样的,从一个类别中的最高投票
category1 has 30 votes
category3 has 25 votes
category5 has 23 votes
category2 has 15 votes
category4 has 10 votes
使用:
使用:
该查询应该可以:
select c.category_name, count(v.id) as number_of_votes
from CATEGORIES c
left join VOTES v on v.category_id = c.id
group by c.id
order by number_of_votes desc
limit 5
(假设您的投票表主键为“id”,则查询应执行此操作:
select c.category_name, count(v.id) as number_of_votes
from CATEGORIES c
left join VOTES v on v.category_id = c.id
group by c.id
order by number_of_votes desc
limit 5
(假设您的投票表主键是“id”我更正了一个mysql错误1064-语法错误,因为您在
排序依据
之后有分组依据
。此外,计数(v.id)
当一个类别没有任何与之相关联的投票时,它将返回NULL。@OMG。我想一个正确的连接将解决空值问题。否,只需使用(ANSI)或(原生MySQL)将空值转换为零即可我更正了一个mysql错误1064-语法错误,因为您在排序依据
之后有了分组依据
。此外,计数(v.id)
在类别没有任何投票关联时将返回NULL。@OMG。我猜正确的联接将解决空值问题。不,只需要使用(ANSI)将空值转换为零即可或者(原生MySQL)就这样,足够关键了。@Ben:谢谢,我真的很感谢反馈和否决票的撤销。就这样,足够关键了。@Ben:谢谢,我真的很感谢反馈和否决票的撤销。