[英]mysql how to shorten count 5 results
我需要从mysql取得5个计数结果,我想问一下,也许所有结果都存在缩短的代码? 我的代码现在:
$result1 = mysqli_query($con,"SELECT * FROM bets WHERE status='Waiting'");
$row_cnt1 = $result1->num_rows;
$result2 = mysqli_query($con,"SELECT * FROM bets WHERE status='Win'");
$row_cnt2 = $result2->num_rows;
$result3 = mysqli_query($con,"SELECT * FROM bets WHERE status='Lost'");
$row_cnt3 = $result3->num_rows;
$result4 = mysqli_query($con,"SELECT * FROM bets WHERE status='Void'");
$row_cnt4 = $result4->num_rows;
我显示以下代码:
<b>Total wins:</b> <?php echo $row_cnt1;?> <br />
<b>Total voids:</b> <?php echo $row_cnt2;?> <br />
<b>Total losts:</b> <?php echo $row_cnt3;?> <br />
<b>Total waiting:</b> <?php echo $row_cnt4;?> <br />
如果您像这样进行分组,则应该能够使用COUNT()函数:
SELECT status, COUNT(*) AS numForStatus
FROM bets
GROUP BY status;
因此,这将显示如下表:
| status | numForStatus |
+----------+--------------+
| waiting | 5 |
| win | 4 |
| lost | 3 |
| void | 2 |
这是简化查询的一种方法,并有望使您的输出也更容易一些。
$query = mysqli_query($con,"SELECT status, COUNT(*) as number FROM bets WHERE status IN ('Waiting','Win','Lost','Void') GROUP BY status");
一个查询中将有4行2列。
注意:如果没有状态,则不需要WHERE语句。
您可以这样显示结果:
while ($row = mysqli_fetch_assoc($query)) {
echo '<b>Total ' . $row['status'] . ': ' . $row['number'] . '</b><br/>';
}
试试这个代码。 它使用SQL
查询中的GROUP BY
子句和while循环来缩短代码。
<?php
$qry = "SELECT COUNT(*) AS CNT, status FROM bets GROUP by status";
$result1 = mysqli_query($con, $qry );
while($row = mysqli_fetch_array(result1, MYSQLI_ASSOC))
{
?>
<b>Total $row['status']:</b> <?php echo $row['CNT'];?> <br />
<?php
}
?>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.