1) 我有一个名为“plan_info_upload”的表,如下所示:
site_id site_name 2G_bw 3G_bw route_path
1 MBCGP1 11 0 abc>bcd>cde
2 BOPBG2 12 22 mnl>khl>jhg
3 BOPCB1 11 0 abc>bcd>khl>bbo
4 BOSBB1 0 25 bops>doc>abc>bcd>jkl
我必须从 routh_path 中找到 unique_hop 的 2g 和 3g bw 以及总共 2g 和 3g bw。但如果其 2G_bw 或 3G_bw 为零,则不计入。但我不明白如何在计数之前检查它的值是否为 0。
我的代码在这里:
<?php
$unique_hop=$_POST['unique_hop'];
$i = 0;
$sql4 = "SELECT COUNT(2G_bw) AS no_of_2G, SUM(2G_bw) AS total_2G_bw, COUNT(3G_bw) AS no_of_3G, SUM(3G_bw) AS total_3G_bw FROM plan_info_upload WHERE route_path LIKE '%$unique_hop%'";
$result = $conn->query($sql);
if ($result->num_rows > 0)
{
while($row = $result->fetch_assoc())
{
$no_of_2G = $row['no_of_2G'];
$total_2G_bw = $row['total_2G_bw'];
$no_of_3G = $row['no_of_3G'];
$total_3G_bw = $row['total_3G_bw'];
?>
<tr>
<td><?php echo ++$i;?></td>
<td><?php echo $unique_hop;?></td>
<td><?php echo $no_of_2G;?></td>
<td><?php echo $total_2G_bw;?></td>
<td><?php echo $no_of_3G;?></td>
<td><?php echo $total_3G_bw;?></td>
</tr>
<?php
}
}
?>
从第一个表中,如果我选择 unique_hop "abc>bcd",则 3 个 routh_path 具有此字符串并对它们现有的 2G_bw 和 3G_bw 进行计数和求和。
我的期望输出是:
unique_hop no_of_2G total_2G_bw no_of_3G total_3G_bw
abc>bcd 2 22 1 25
但是输出是这样的:
unique_hop no_of_2G total_2G_bw no_of_3G total_3G_bw
abc>bcd 3 22 3 25
那么如何在 COUNT 操作之前进行检查呢?请任何人帮助我解决问题。
最佳答案
试试这个:
SELECT COUNT(nullif(2G_bw, 0)) AS no_of_2G, SUM(2G_bw) AS total_2G_bw, COUNT(nullif(3G_bw, 0)) AS no_of_3G, SUM(3G_bw) AS total_3G_bw FROM plan_info_upload WHERE route_path LIKE '%$unique_hop%'";
关于php - COUNT操作前如何检查?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37672128/