簡體   English   中英

如何在PHP中回顯GROUP BY的第一個值

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

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