DISTINCT не отбирает уникальные записи (+)

rubalex

Новичок
DISTINCT не отбирает уникальные записи (+)

и так есть табличка.

SELECT term_id, val, date
FROM fin_account2terms_t

term_id val date
1 0.4000 2003-06-05
2 20.0000 2003-06-05
3 0.1000 2003-06-05
6 0.1000 2003-06-05
6 0.2000 2003-08-21
6 0.3000 2003-08-25

мне нужно отобрать уникальные значения term_id с максимальной датой. и вот тут начинаются вопросы.

почему не работает DISTINCT (term_id)???
SELECT DISTINCT (
term_id
), val, date
FROM fin_account2terms_t ВЫВОДИТ ТОЖЕ САМОЕ

и почему запрос
SELECT term_id, val, MAX( date )
FROM fin_account2terms_t
GROUP BY term_id

выводит вообще бред отрывая дату от условия.?

term_id val MAX( date )
1 0.4000 2003-06-05
2 20.0000 2003-06-05
3 0.1000 2003-06-05
6 0.1000 2003-08-25
 

Falc

Новичок
Ты сначало определись что тебе надо наити максимальную дату для каждого term_id или вытащить полностью строки в которых эта дата максимальна.
Если второе то это делаеться в 2 запроса сначало вытаскиваешь все даты, потом все строчки с заданными term_id и датами. Еще не забудь что с датой равной максимальной для данного term_id может быть несколько записей.
 

rubalex

Новичок
да имено нужно вытаскивать полностью строки с макс датами.
вот тока я никак не могу понять твое "вытаскиваешь все даты".

конкретная табличка выше. подскажи 2 запроса
 

Falc

Новичок
Все даты вытаскиваются твоим запросом:
[sql]
SELECT term_id, MAX( date )
FROM fin_account2terms_t
GROUP BY term_id
[/sql]
Их можно вытащить во временую табличку.
 
Сверху