[英]how to echo the first value of a GROUP BY in PHP
我有这样的桌子
|Rank|Location|Item Sold|Success|Failed|
|--------------------------------------|
|1 |Mall |7 |5 |2 |
|2 |School |5 |2 |3 |
|3 |Office |4 |0 |4 |
我想发生的事情是使售出的物品数量最多,在这种情况下为7,然后回显它。 我瞄准的结果是这个
Most number of items sold for the day: 7
|Rank|Location|Item Sold|Success|Failed|
|--------------------------------------|
|1 |Mall |7 |5 |2 |
|2 |School |5 |2 |3 |
|3 |Office |4 |0 |4 |
我不知道该怎么做
这是我用来从数据库中获取数据的sql代码,这是
<?php
$sql = "SELECT location, COUNT(*) as itemsold,
SUM(CASE WHEN leadstatus = 'Success' THEN 1 ELSE 0 END) as Success,
SUM(CASE WHEN leadstatus = 'Failed' THEN 1 ELSE 0 END) as Failed
FROM inventory
LEFT JOIN inventorydetails ON inventory.leadid = inventorydetails.leadid
GROUP BY location
ORDER BY itemsold DESC";
$result = mysqli_query($conn, $sql);
?>
这是我用来创建表,然后用数据库中的信息填充表的代码
<table border ="5" align="center">
<tr>
<td>Rank</td>
<td>Location</td>
<td>Item Sold</td>
<td>Success</td>
<td>Failed</td>
</tr>
<?php
$i = 1;
while ($row = mysqli_fetch_assoc($result)) {
echo "<tr>";
echo "<td>".$i."</td>";
echo "<td>".$row[location]."</td>";
echo "<td>".$row[itemsold]."</td>";
echo "<td>".$row[Success]."</td>";
echo "<td>".$row[Failed]."</td>";
echo "</tr>";
$i=$i+1;
}
?>
</table>
下面应该可以解决问题。 前提很简单。 获取第一行,如果存在,则回显标题行。
然后打印表头。
如果有数据,则再次执行循环,以填充表行。
<?php
$row = mysqli_fetch_assoc($result);
if($row) {
echo "Most number of items sold for the day: {$row['itemsold']}";
} ?>
<table border ="5" align="center">
<tr>
<td>Rank</td>
<td>Location</td>
<td>Item Sold</td>
<td>Success</td>
<td>Failed</td>
</tr>
<?php
if($row) {
$i = 1;
do {
echo "<tr>";
echo "<td>".$i."</td>";
echo "<td>".$row[location]."</td>";
echo "<td>".$row[itemsold]."</td>";
echo "<td>".$row[Success]."</td>";
echo "<td>".$row[Failed]."</td>";
echo "</tr>";
$i=$i+1;
} while ($row = mysqli_fetch_assoc($result));
} // close the if. ?>
</table>
如果要通过SQL检索最大值,可以执行以下操作
select max(itemsold) from (
(
SELECT location, COUNT(*) as itemsold,
SUM(CASE WHEN leadstatus = 'Success' THEN 1 ELSE 0 END) as Success,
SUM(CASE WHEN leadstatus = 'Failed' THEN 1 ELSE 0 END) as Failed
FROM inventory
LEFT JOIN inventorydetails ON inventory.leadid = inventorydetails.leadid
GROUP BY location
ORDER BY itemsold DESC
)
如果要通过返回的$ result获取最大值,可以先将所有行存储到数组中,找到要打印的最大值,然后最后使用数组输出表。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.