2016-11-16 86 views
0

我有一個庫存表,每個交易都會得到更新。目前有4種產品,但在某些時候可能會有更多。以下是我用來拉一切的表格。如何拉起每個產品的最後一個條目


<?php 
$db = new mysqli('', '', '', 'inventory'); 

if($db->connect_errno > 0){ 
    die('Unable to connect to database [' . $db->connect_error . ']'); 
} 

$sql = "SELECT * FROM inventory"; 

if(!$result = $db->query($sql)){ 
    die('There was an error running the query [' . $db->error . ']'); 
} 

echo "<table style='border: 2px;font-family: tahoma;'><caption><b>Entire Database Contents</b></caption><tr><td>ID</td><td>Time Stamp</td><td>Staff</td><td>Client</td><td>Needed</td><td>Product</td><td>Amount</td><td>Totals</td><td style='width: 200px;'>Comments</td></tr>"; 
    while($row = $result->fetch_assoc()){ 
     echo '<td>' . $row['id'] . '</td>'; 
     echo '<td>' . $row['timeStamp'] . '</td>'; 
     echo '<td>' . $row['staff'] . '</td>'; 
     echo '<td>' . $row['client'] . '</td>'; 
     echo '<td>' . $row['dateNeeded'] . '</td>'; 
     echo '<td>' . $row['product'] . '</td>'; 
     echo '<td>' . $row['amt'] . '</td>'; 
     echo '<td>' . $row['tot'] . '</td>'; 
     echo '<td>' . $row['comments'] . '</td></tr>'; 
} 

echo "</table>"; 

?> 

我想要做的就是拉ONLY每個產品的最新條目。我在想也許DISTINCT和LAST可能在這裏發揮作用,但不知道如何設置它。任何指針?

+0

所以目前,我有4個產品。該表格將只有4行,每個產品具有最近的活動。一些條目連續兩次或更多次是同一產品。我是否需要回4次才能獲得每種產品,或者是否可以循環使用4種產品中的每一種。在某個時候會有更多的產品被添加。這就是爲什麼我想要循環。 –

+0

仍在掙扎。通過這些例子中的每一個,它列出了數據庫中的所有內容。我只希望它根據時間戳查找每個產品的最後一個條目。我可以通過執行4個mysql來做到這一點,但我認爲它應該能夠查找每個產品的最新更新(來自時間戳)並列出產品和總數。 這基本上是我想要的樣子。產品名稱和我們在庫存中的數量。 Pit Crew SE 69 Pit Crew B 0 Cooltron - Cooling 3 Cooltron - Heat and Cool 7 完全可能的是,我沒有得到任何東西。 –

回答

1

您應該創建DATE_ADDED場和排序它:

$sql = "SELECT * FROM inventory ORDER BY date_added DESC"; 
1

您需要選擇只與MAX時間戳產品:

SELECT i.* FROM inventory i 
JOIN (SELECT product, MAX(timestamp) timestamp FROM inventory GROUP BY product) i2 
ON i2.product = i.product 
AND i2.timestamp = i.timestamp 
0

這應該工作:

select distinct product, id, timeStamp, staff, client, dateNeeded, amt, tot, comments from inventory order by timestamp desc; 
相關問題