2012-03-16 3 views
0

마지막 날짜까지 내 데이터베이스에서 항목 이름을 가져 오는 방법을 알지 못합니다.날짜별로 마지막 항목을 가져 오는 방법 (그룹화하지 않음)

나는 DB에 있습니다

id | code | date_field | name | sales | 
----+------+------------+-------+-------+ 
3 | AA1 | 20-17-2012 | asd | 20 
4 | AA2 | 20-20-2012 | zad | 13 
5 | AA3 | 20-10-2012 | 3ad | 4 
8 | AA4 | 20-22-2012 | bez | 1 
9 | AA5 | 20-21-2012 | sda2 | 3 
10 | AA6 | 20-21-2012 | goo | 5 

을 나는 같은 것을 사용한다고 생각 : 나는이야 ..

SELECT MAX(date) as date_field, code, name from table 
group by date_field 

id | code | date_field | name | sales | 
----+------+------------+-------+--------+ 
1 | AA1 | 20-10-2012 | asd | 4 
2 | AA1 | 20-13-2012 | asd | 10 
3 | AA1 | 20-17-2012 | asd | 20 
4 | AA2 | 20-20-2012 | zad | 13 
5 | AA3 | 20-10-2012 | 3ad | 4 
6 | AA4 | 20-15-2012 | bez | 0 
7 | AA4 | 20-17-2012 | bez | 1 
8 | AA4 | 20-22-2012 | bez | 0 
9 | AA5 | 20-21-2012 | sda2 | 3 
10 | AA6 | 20-21-2012 | goo | 5 

내가 얻을 필요 권리?

P.S - '판매'입력란이 그룹화되지 않은 것 같습니다.

+0

어떤 종류의 날짜입니까? 그렇지 않은 것 같습니다. –

+0

이 날짜가 무엇이든간에, 예를 들어이를 적어 두십시오. – remizpez

답변

0
SELECT date_field as `date`, code, name, sales 
from my_table 
group by date_field 
order by sales desc 
+0

그 방법 필드 매출 그룹화, 너무? – remizpez

+0

@remizpez : 아니요, date_field로 그룹화하면됩니다. 나는 그것을 시도했다. 그것은 작동합니다. 확인 할수 있어요? –

0

이 코드를 사용해보십시오 : -

SELECT a.date as date_field, a.code, a.name from table a 
where a.id = (select max(b.id) from table b where b.name = a.name) 
and a.date = (select max(c.date) from table c where c.name = a.name) 
order by sales desc 
+0

이 쿼리를 사용해 보셨습니까? –

0

상관 하위 쿼리는 ..이 기초가 될 수 있습니다 얼마나 큰지 알고있는 작은 세트, 경우에도 항상 시간 성능 히트입니다. 나는 코드 당 최대 날짜를 얻고 그 레코드를 얻기 위해 다시 가입하기 위해 내부 사전 쿼리를 제안 할 것이다. 에 대한 색인을 확인하십시오 (코드, 날짜 _ 필드)

select 
     yt2.* 
    from 
     (select yt.code, 
       max(yt.date_field) maxbyDate 
      from 
       YourTable yt 
      group by 
       yt.code) PreQuery 
     JOIN YourTable yt2 
     on PreQuery.Code = yt2.code 
     AND PreQuery.maxByDate = yt2.date_field 
관련 문제