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