2015-05-21 43 views
1

我哈瓦的表像這樣如何呼應一個GROUP BY的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> 
+0

您是否收到任何錯誤 –

+0

我沒有收到任何錯誤,表格工作正常。我只是想要得到最高數量的商品銷售 – marse

+0

,因爲你訂購,你的第一行是最高的。因此,獲取,顯示標題,然後開始你的表循環,但使用'do .. while'而不是一會兒。 –

回答

1

下面應該做的伎倆。前提很簡單。獲取你的第一行,如果存在,回顯出你的標題行。

然後打印表頭。

然後再次如果您有數據,請執行一個填充表格行的循環。

<?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> 
+0

謝謝你 – marse

+0

你可能想糾正你的代碼。沒有'$ row ['itemssold']' – RST

+0

這樣的事情,所以沒有。 –

0

如果你想獲取最大價值通過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 
) 

如果你想通過返回$結果獲得最大值,可以將所有的行首先存儲到一個數組中,找到最大值打印,然後最後使用數組輸出表格。

+0

對不起,我沒有得到你想說的話:( – marse

相關問題