0

私は2つのテーブルraw_materialsraw_materials_moves.

raw_materialsフィールドがあります

id, name

raw_materials_movesこのフィールドがあります

id, raw_material_id, price, created

だから、私selectは各原材料の3つの動きを持続する必要があります

このクエリがありますが、機能しません

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
4

5 に答える 5

0

各原材料の作成日 (日付だと思います) ごとの最後の 3 つの動き

select * from 
  (select a.id,a.price,a.created, 
          if(@mat=a.raw_material_id,@num:=@num+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;

ここでデモを見る

于 2013-07-03T05:10:46.913 に答える
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;
于 2013-07-03T05:06:10.627 に答える