[英]Merge these two MySQL queries into one
这是手头的任务:我有一个名为'reports'的数据库表,这个表中的一列是'submitted_by'。 此列包含提交报告的人员的用户名。
现在,我需要做的是显示按他们发布的报告数量排序的用户名列表。 所以这样的事情应该出来:
用户| 报告
马克| 25
约翰| 18
玛丽| 7
等等
我已经编写了这个PHP / MySQL代码来做到这一点,它非常简单,但我想知道这些是否可以合并为1个查询。 此外,这会在效率方面获得更多收益吗?
$users=array();
$result=mysql_query("select id,submitted_by from reports group by submitted_by");
while($row=mysql_fetch_array($result)){
$result1=mysql_query("select id,submitted_by from reports where submitted_by='$row[submitted_by]' ");
$users[$row[submitted_by]]=mysql_num_rows($result1);
}
arsort($users);
然后只需回显来自$users
每个元素。
请尝试以下代码:
$users = array();
$result=mysql_query("SELECT id, submitted_by, COUNT(*) as cnt FROM reports GROUP BY submitted_by ORDER BY COUNT(*) DESC");
while($row=mysql_fetch_array($result)){
$users[$row['submitted_by']] = $row['cnt'];
}
$users = array();
$result = mysql_query("
SELECT id,submitted_by, COUNT(*) as amount
FROM reports
GROUP BY submitted_by
ORDER BY amount DESC
");
while($row = mysql_fetch_array($result))
$users[$row['submitted_by']] = $row['amount'];
// arsort($users);
尝试:
$query = "SELECT id, submitted_by, COUNT(*) as numbers FROM reports GROUP BY submitted_by ORDER BY COUNT(*) DESC";
$result = mysql_query($query);
echo "<table><tr><th>User</th><th>Reports</th></tr><tr>";
while($row = mysql_fetch_assoc($result)) {
echo "<td>$row[submitted_by]<td>";
echo "<td>$row[numbers]<td>";
}
echo "</tr></table>"
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.