2013-07-03 8 views
0

나는 두 개의 테이블 raw_materialsraw_materials_moves을 가지고 있습니다.각 항목의 마지막 3 행 선택

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 

답변

-3

역순 정렬 (예 : ... SORT BY somefield DESC) 후 처음 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

그냥 작동하지 않는 데 사용하여 DESC 제한 3; 그게 효과가 있니? – kevinm

+0

아니 ... 너 미쳤어! – borfrank

0

지난 3 개 이동 생성에 의해 역순으로 가져 오는에 의해 DESC (나)와 사용자의 커서를 제안합니다) LIMIT 3를 추가하여 얻을 수 (나는 날짜를 가정) 각 원료의

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

관련 문제