2011-06-23 50 views
0

我的表Mysql的連接查詢問題

產品

pid name 

1 AA 
2 bb 
3 cc 

歷史表

hid pid uid 
1 1 1 
2 1 2 
3 1 1 // this one should join with pid 1 
4 3 2 // this one should join with pid 3 
5 2 3 
6 2 1 // this one should join with pid 2 

我喜歡上一個產物。歷史錶店投標人 details.if顯示最近的投標人沒有出價的產品只需要返回null。

感謝

回答

2

如何像

SELECT * 
FROM product p LEFT JOIN 
     (
      SELECT ht.* 
      FROM History_table ht INNER JOIN 
        (
         SELECT pid, 
           MAX(hid) last_hid 
         FROM History_table ht 
         GROUP BY pid 
        ) lstItem ON ht.pid = lstItem.pid 
           AND ht.hid = lstItem.last_hid 
     ) ht ON p.pid = ht.pid 

首先,你需要獲取MAX每一PID,其定義應該是最新的條目隱藏。

然後將它們加回到同一個歷史表來檢索uid。

最後加入此(左加入)回實際產品表。

希望有所幫助。

+0

它的工作原理謝謝 – Gowri