Forum Webscript.Ru
Общие => Базы данных => Тема начата: hanslinger от 13 Февраля 2006, 18:53:47
-
Следующая картина. Есть таблица:
/===========================\\
| id | date | price |
|===========================|
| 1 |01.01.2006| 1000000|
[b]| 1 |03.01.2006| 2000000|[/b]
| 1 |02.01.2006| 5000000|
| 2 |01.02.2006| 7000000|
| 2 |21.01.2006| 3000000|
[b]| 2 |01.03.2006| 4000000|[/b]
\\===========================/
Нужно выбрать для каждого id значение price при максимальной дате.
Пока родил SELECT DISTINCT id, date, price GROUP BY id;
Максимальную дату вытащить не получается.
Что-то я совсем залип.
-
через sub-select-ы ИМХО
-
SELECT id,price,MAX(date)
FROM table1
GROUP by id;
-
to sublimity
MAX(date) вернет везде одно и тоже значение
-
вру...
но вот цена точно не правильная будет выбрана. не из той записи, в которой максимальная дата.
-
unclebob
Выше приведенный запрос равноправен:
SELECT `id`, `date`, `price`FROM `sometable` GROUP BY `id`
[OFF]через sub-select-ы ИМХО - перыый ответ по этому сабжу[/OFF]
-
Ок, попробую.
-
1. Если я не ошибаюсь, то для хранения даты поле должно иметь формат ГГГГ-ММ-ДД, а не ДД-ММ-ГГГГ.
2. Если пытаться найти максимаьлное значение в поле формата ДД-ММ-ГГГГ, то скорее всего будет выведено максимальное значение по ДД (день месяца), что недопустимо.
3. Вижу выход только в том, чтобы фильтровать значеиня уже через PHP, видоизменяя значение даты...
интересно, эти мои замечания ещё нужны?....
-
Спасибо, конечно, за участие, но я пока на это забил :)
-
Дату надо хранить в формате date - тогда сортировка будет правильной и всё получится