簡體   English   中英

mysql如何縮短5個結果

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM