Вниз  MySQL и мелкие вопросы
- 18.01.2014 / 14:02
aNNiMON
  Супервизор

aNNiMON 
Сейчас: Offline
Dinisimys, да, всё верно, я почти так и собираюсь сделать.

Последняя проблема.
Есть таблица с датой, например
id date
1 2014-01-10
2 2014-01-14
3 2014-01-14
4 2014-01-15
5 2014-01-17
6 2014-01-17
7 2014-01-18
То есть даты могут повторяться. Мне нужно извлечь из этой таблицы ровно столько данных, чтобы было 3 уникальных даты в порядке убывания. То есть:
4 2014-01-15
5 2014-01-17
6 2014-01-17
7 2014-01-18
То есть, если, к примеру, будут 2 записи 18-го числа, 6 записей 17-ого и 23 записи 15-ого, то запрос должен возвратить 31 строку.
Если будет 1 запись 18-ого числа, 1 запись 10-ого числа и 2 на 1 января, то вывести все четыре.

Я думаю сделать группировку по дате, отобрать 3 последние записи. Но как потом дальше получить значения не знаю. Может как-то можно одним запросом всё сделать?
__________________
 let live
- 18.01.2014 / 14:10
Dinisimys
  Пользователь

Dinisimys 
Сейчас: Offline
aNNiMON, так и не понял твоего вопроса. Где тут три уникальных даты?
4 2014-01-15
5 2014-01-17
6 2014-01-17
7 2014-01-18
15, 17, 18? Ну а в чем проблема тогда, просто сортируй да и все. ORDER BY там, например

Изменено Dinisimys (18.01 / 14:12) (всего 1 раз)
- 18.01.2014 / 14:17
aNNiMON
  Супервизор

aNNiMON 
Сейчас: Offline
Dinisimys, ну отсортирую, дальше что? Как мне три даты взять?
LIMIT 3 выдаст
5 2014-01-17
6 2014-01-17
7 2014-01-18

15-ое число пропадёт.
__________________
 let live
- 18.01.2014 / 14:19
Dinisimys
  Пользователь

Dinisimys 
Сейчас: Offline
aNNiMON, смотри, тебе надо чтобы они не повторялись?
- 18.01.2014 / 14:23
aNNiMON
  Супервизор

aNNiMON 
Сейчас: Offline
Dinisimys, нет, в выборке они должны повторяться, но выбирать надо из трёх уникальных дат.
__________________
 let live
- 18.01.2014 / 14:48
Dinisimys
  Пользователь

Dinisimys 
Сейчас: Offline
aNNiMON, тут скорее всего php понадобится.

Изменено Dinisimys (18.01 / 14:52) (всего 2 раза)
- 18.01.2014 / 16:38
Freddy
  Пользователь

Freddy 
Сейчас: Offline
aNNiMON,
  1. SELECT s1.id, s1.date
  2. FROM stat as s1
  3. JOIN (
  4.     SELECT date
  5.     FROM stat
  6.     GROUP BY date
  7.     LIMIT 3
  8. ) as s2 on s1.date = s2.date
  9. ORDER BY date DESC;

- 18.01.2014 / 17:00
Freddy
  Пользователь

Freddy 
Сейчас: Offline
пропустил ORDER BY date DESC во внутреннем запросе
- 18.01.2014 / 18:14
aNNiMON
  Супервизор

aNNiMON 
Сейчас: Offline
Freddy, работает :-)
__________________
 let live
- 20.01.2014 / 12:22
Koenig
  Модератор форума

Koenig 
Сейчас: Offline
aNNiMON, group by date
__________________
 Магистр Мёда
Наверх  Всего сообщений: 750
Фильтровать сообщения
Поиск по теме
Файлы топика (22)