[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Групировка по последнему значение
BorodinKO
Есть табличка

[ORDER]
id order value
1 1 10
2 1 12
3 2 1
4 2 8
5 2 2
6 1 9
7 3 3


Таблица ORDER состоит из 3 столбцов, id - идентификатор строки; order - идентификатор заказа; value - цифровое значение заказа

У заказа(order) должна быть возможность изменять значение. Так например у 2 заказа было значение 1 после чего было изменено на 8 а затем на 2


id order value
3 2 1
4 2 8
5 2 2


Так же пример к первому заказу: сначала у него было значение 10 затем 12 затем 9


id order value
1 1 10
2 1 12
6 1 9


Думаю с этим все понятно.
ЗАДАЧА: Выводить только последние значения(value) заказов(order) так к примеру
у первого заказа это будет - 9, у второго - 2 у третьего - 3


[ORDER]
id order value
5 2 2
6 1 9
7 3 3
ilyaplot
SELECT * FROM tablename ORDER BY id DESC LIMIT 3


Выдаст

id order value
7 3 3
6 1 9
5 2 2


Останется просто массив перевернуть

_____________
Заработай на Userator
BorodinKO
Так вы не так поняли, то что ид 5,6 и 7 это просто совпадение, и простой сортировкой и инвертированием тут не обойтись. Я же расписал задачу!
ilyaplot
Цитата (BorodinKO @ 5.05.2013 - 16:58)
Так вы не так поняли, то что ид 5,6 и 7 это просто совпадение, и простой сортировкой и инвертированием тут не обойтись. Я же расписал задачу!

Значит плохо описал. Ничего не понятно

_____________
Заработай на Userator
BorodinKO
Цитата (ilyaplot @ 5.05.2013 - 12:59)
Цитата (BorodinKO @ 5.05.2013 - 16:58)
Так вы не так поняли, то что ид 5,6 и 7 это просто совпадение, и простой сортировкой и инвертированием тут не обойтись. Я же расписал задачу!

Значит плохо описал. Ничего не понятно

Думаю теперь я все понятно расписал
ilyaplot
Признаюсь честно, не смог. Обычно историю изменений я выносил в отдельную таблицу. И запросы легче и выборка быстрее делается, т.к. записей меньше.

_____________
Заработай на Userator
BorodinKO
Цитата (ilyaplot @ 5.05.2013 - 14:18)
Признаюсь честно, не смог. Обычно историю изменений я выносил в отдельную таблицу. И запросы легче и выборка быстрее делается, т.к. записей меньше.

По ряду причин пришлось ограничится 1 таблицей
ilyaplot
 SELECT * FROM `table` as t WHERE t.id  = (SELECT MAX(id) FROM `table` as t1 WHERE t.order = t1.order);

Получился вложенный запрос, где выбирается максимальный id для каждого order, остальное не выбирается.

_____________
Заработай на Userator
ilyaplot
В следующий раз лучше спрашивать у гугла. Ему спасибо не нужно говорить

_____________
Заработай на Userator
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.