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