2011-09-13 47 views
2

最新行要創建一個表,我用下面的查詢檢索數據:按日期排序,只爲每個產品

SELECT cId,cProductId,cDate,cInfo FROM tProduct ORDER BY cProductId ASC,cDate ASC; 

當然,我簡化了查詢了很多,但你得到了顯着,同一個產品可能會有很多記錄,而唯一讓我感興趣的是最新的記錄,因此我如何訂購我的查詢:我只存儲我在while循環中遇到的最後一行的信息。

while (($row = $result->fetch()) !== FALSE) 
{ 
     if(!empty($row[0])){ 
      if(($table_row[1]!=$row[1])&&(!empty($table_row[0]))){ 
       //Display the last row saved 
      } 
      $table_row= array($row[0],$row[1],$row[2],$row[3]); 
     } 
} 

現在我想爲生成的html表實現一些排序選項。我會將排序信息存儲在會話變量中。在排序選項中,我希望能夠按日期排序。我如何確保在按日期排序查詢時只檢索每個產品的最新行?

回答

3

您沒有在查詢中包含FROM子句。但是,假設您需要每個產品ID的最新行,您可以這樣做:

SELECT cId,cProductId,cDate,cInfo 
FROM tProduct t1 
WHERE cDate = (SELECT max(cDate) FROM tProduct t2 where t1.cProductID = t2.cProductId) 
ORDER BY cProductId ASC,cDate ASC; 
+0

您是對的,忘記了FROM子句,現在我修復了它。 – Eldros

+0

好吧,我在我的答案中更新了表名 –