繁体   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