나는 previous poster과 비슷한 질문입니다.마지막 행이 MySQL을 사용하는 조건과 일치하는 부모/자식 관계의 마지막 자식 행을 선택하는 방법
그의 질문은 : "자식 행이 타임 스탬프에 의해 정렬되는 부모 자식 관계의 마지막 자식 행을 각각 선택하고 싶습니다."
내가이 일을하고 싶은그러나 나는 또한 status
내 테이블 fobs_inventory
및 fobs_inventory_history
있습니다 1.
입니다 만 자식 행을 선택하고 싶습니다. fobs_inventory_history.status = 1
-------------------------------
| fobs_inventory |
-------------------------------
| inv_id | other fields |
-------------------------------
| 1 | ... |
| 2 | ... |
| 3 | ... |
-------------------------------
----------------------------------------------
| fobs_inventory_history |
----------------------------------------------
| id | inv_id | status | created_at |
----------------------------------------------
| 1 | 1 | 0 | 2011-10-11 10:00:00 |
| 2 | 1 | 1 | 2011-08-01 10:00:00 |
| 3 | 1 | 0 | 2011-07-01 10:00:00 |
| 4 | 2 | 1 | 2011-09-11 14:00:00 |
| 5 | 2 | 0 | 2011-08-01 12:00:00 |
| 6 | 2 | 2 | 2011-07-01 00:00:00 |
| 7 | 3 | 1 | 2011-10-11 14:00:00 |
| 8 | 3 | 2 | 2011-08-01 12:00:00 |
| 9 | 3 | 0 | 2011-07-01 00:00:00 |
----------------------------------------------
은 다음 표과 같이 보일 것입니다 결과 집합을 생성하는 가장 좋은 SQL 구문은 무엇입니까 각 fobs_inventory
에 대한 : (가장 최근에 시간 소인 예) fobs_inventory_history
기록, 나는 최신 줄까?
--------------------------------------------------------------------
| inv_id | fob_inventory_history_id | status | created_at |
--------------------------------------------------------------------
| 2 | 4 | 1 | 2011-09-11 14:00:00 |
| 3 | 7 | 1 | 2011-10-11 14:00:00 |
--------------------------------------------------------------------
나는 status
편집
1의
좀 더이 작업 한 가장 최근의 타임 스탬프가 갖고있는 행만을 반환하고 싶은, 내가 함께했다 나는 다른 사람들이 똑같은 일을하려 할 때 도움이 될 수 있기 때문에 여기에 게시하고있다. 당신은을 수정할 수 있습니다
select h.id, h.fob_id, h.inv_id, h.status, h.created_at from fobs_inventory_history h, (
select id, inv_id, status, max(created_at) as ts
from fobs_inventory_history
group by inv_id
) h2
where h.created_at = h2.ts
and h.inv_id = h2.inv_id
and h.fob_id = 1 and h.status = 1