Автор Тема: MySQL: distinct? group by?...  (Прочитано 7836 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн hanslinger

  • H2Oer
  • Ветеран
  • *****
  • Сообщений: 1148
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.orava.ru
MySQL: distinct? group by?...
« : 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;
Максимальную дату вытащить не получается.
Что-то я совсем залип.

Оффлайн Макс

  • vir magni ingenii
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3534
  • +0/-0
  • 2
    • Просмотр профиля
MySQL: distinct? group by?...
« Ответ #1 : 13 Февраля 2006, 19:36:06 »
через sub-select-ы ИМХО
First learn computer science and all the theory. Next develop a programming style. Then forget all that and just hack. ( George Carrette )

Оффлайн sublimity

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 121
  • +0/-0
  • 0
    • Просмотр профиля
MySQL: distinct? group by?...
« Ответ #2 : 13 Февраля 2006, 19:41:08 »
SELECT id,price,MAX(date)
FROM table1
GROUP by id;

Оффлайн unclebob

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 96
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
MySQL: distinct? group by?...
« Ответ #3 : 21 Февраля 2006, 21:17:13 »
to sublimity
MAX(date) вернет везде одно и тоже значение
запивайте пиво водкой, чтобы жизнь была короткой
запивайте водку пивом, чтобы стать большим красивым

Оффлайн unclebob

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 96
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
MySQL: distinct? group by?...
« Ответ #4 : 22 Февраля 2006, 20:09:06 »
вру...
но вот цена точно не правильная будет выбрана. не из той записи, в которой максимальная дата.
запивайте пиво водкой, чтобы жизнь была короткой
запивайте водку пивом, чтобы стать большим красивым

Оффлайн for_i_0

  • $15 per hour
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 555
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.php.net/manual/en
MySQL: distinct? group by?...
« Ответ #5 : 22 Февраля 2006, 21:30:00 »
unclebob
Выше приведенный запрос равноправен:
SELECT `id`, `date`, `price`FROM  `sometableGROUP BY `id`

[OFF]через sub-select-ы ИМХО - перыый ответ по этому сабжу[/OFF]
[off]Безработный[/off]

Оффлайн hanslinger

  • H2Oer
  • Ветеран
  • *****
  • Сообщений: 1148
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.orava.ru
MySQL: distinct? group by?...
« Ответ #6 : 22 Февраля 2006, 21:33:38 »
Ок, попробую.

Оффлайн andymc

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 400
  • +1/-0
  • 0
    • Просмотр профиля
MySQL: distinct? group by?...
« Ответ #7 : 07 Марта 2006, 22:24:43 »
1. Если я не ошибаюсь, то для хранения даты поле должно иметь формат ГГГГ-ММ-ДД, а не ДД-ММ-ГГГГ.
2. Если пытаться найти максимаьлное значение в поле формата ДД-ММ-ГГГГ, то скорее всего будет выведено максимальное значение по ДД (день месяца), что недопустимо.
3. Вижу выход только в том, чтобы фильтровать значеиня уже через PHP, видоизменяя значение даты...

интересно, эти мои замечания ещё нужны?....

Оффлайн hanslinger

  • H2Oer
  • Ветеран
  • *****
  • Сообщений: 1148
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.orava.ru
MySQL: distinct? group by?...
« Ответ #8 : 08 Марта 2006, 00:44:37 »
Спасибо, конечно, за участие, но я пока на это забил :)

Оффлайн Tayfur

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 1
  • +0/-0
  • 0
    • Просмотр профиля
MySQL: distinct? group by?...
« Ответ #9 : 23 Ноября 2006, 15:17:33 »
Дату надо хранить в формате date - тогда сортировка будет правильной и всё получится
поделюсь хостингом

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28