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