2013-07-03 39 views
0

我有兩個表raw_materialsraw_materials_moves選擇每個項目的最後3行

raw_materials有場

id, name 

raw_materials_moves有這個領域

id, raw_material_id, price, created 

所以,我需要每種原料的select最後3個移動

我有這樣的查詢,但doesn't工作

SELECT a.*, b.price, b.created 
FROM raw_materials a 
LEFT JOIN 
(SELECT price, raw_material_id, created FROM raw_material_moves ORDER BY created DESC LIMIT 3) b 
    ON b.raw_material_id=a.id 
ORDER BY a.id 

回答

-3

反向分類(即... SORT BY somefield DESC),然後獲得第3(通過附加LIMIT 3

0

,我將通過創建

+0

我真的是新的Mysql,你能舉個例子嗎? – borfrank

0
SELECT r1.id,name,raw_material_id 

FROM raw_materials r1, raw_materials_move r2 

WHERE r1.id=r2.id ORDER BY DESC LIMIT 3; 
+0

它不工作我的朋友 – borfrank

+0

只是使用ORDER BY DESC LIMIT 3;那樣有用嗎? – kevinm

+0

沒有傢伙......我瘋了! – borfrank

0

最後3個移動以相反的順序獲取建議你到用戶光標DESC(或)(我假定日期)每種原料的

select * from 
    (select a.id,a.price,a.created, 
      if(@mat=a.raw_material_id,@num:[email protected]+1,@num:=1) rank, 
      @mat:=a.raw_material_id 
    from raw_materials_moves a, (select @num:=0) b 
    order by a.raw_material_id,a.created desc) temp 
where rank <=3; 

看到demo here

+0

它沒有工作給我一個錯誤我的朋友 – borfrank

+0

現在檢查它。它應該工作。 – chetan

+0

你有任何電子郵件嗎?所以我可以向你發送SQls表格,我運行查詢,但它返回整個移動表格。 – borfrank

相關問題