Задавайте вопросы, мы ответим
Вы не зашли.
Доброго времени суток уважаемые форумчане!
В общем проблема следующая:
Имеется таблица:
Неактивен
Не понятен критерий выбора - какие строки оставить, а какие сохранить. Скажем, есть две строки, которые отличаются только id и obem. Их нужно одну или две? А если nick_id? Сформулируйте нормально задачу, а тогда и решение найдется.
Неактивен
Извините за тупость постановки задачи
есть например запрос:
Неактивен
Если в результате запроса Вы хотите получить всегда одну строку, то достаточно
добавить нужную сортировку и ограничение: ORDER BY id DESC LIMIT 1;
Если же Вы хотите получать все строки из таблицы с группировкой по остальным
полям, то тут запрос будет куда менее симпатичным:
SELECT * FROM cargo WHERE id IN
(SELECT MAX(id) FROM cargo GROUP BY :тут список полей, кроме различающихся: )
Неактивен
Так в том-то и дело что нужно вывести все поля... т.к. потом php-скриптом они попадают в массив и циклом выводятся! Строк может быть и не сколько.. например имеется 7 товаров с одинаковыми характеристиками и разными датами и 5 вообще разных.. вот он должен вывести из 7 одинаковых последнюю и еще +5 других... Я совсем запутался..
Неактивен
А как это противоречит тому, что написал я?
Неактивен
SELECT * FROM cargo WHERE `pa`='136' AND `pb`='50' IN
(SELECT MAX(id) FROM cargo GROUP BY `nick_id`, `namegruz`, `stav`, `ves`, `ves_type`, `obem`, `lengthc`, `widthc`, `heightc`, `pa`, `pb`, `postp`, `region_o`, `other`, `region_o2`, `other2`, `edit`, `about`, `nds`, `length`, `update`, `dublirovanie`)
вот так надо было сделать? у меня условия идут по этим двум полям `pa`, `pb`
Неактивен
Лучше WHERE в подзапрос загоните — меньше строк будет обрабатывать.
Ну и группировать по ним не надо, т.к. они фиксированные.
Неактивен
Запрос положил всю базу и сервак пришлось ребутить!!!
Неактивен
Не удивительно. Группировать по такому количеству полей — жестокое занятие.
Индексы на каких-то полях с большой дискретностью могут несколько облегчить
ситуацию. Но вообще надо, наверное, менять логику.
Неактивен