Модераторы: skyboy
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите с запросом, delete + группировка 
:(
    Опции темы
oksale
Дата 18.8.2006, 09:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 192
Регистрация: 17.6.2005
Где: Санкт-Петербург

Репутация: 1
Всего: 9



Таблица:
Код

CREATE TABLE `Price` (
  `id` int(11) NOT NULL auto_increment,
  `Id_product` int(11) default NULL,
  `price_dollar` float(9,2) default NULL,
  `price_rub` float(9,2) default NULL,
  `count_spb_pr` int(11) unsigned default NULL,
  `count_mosc_pr` int(11) unsigned default NULL,
  `date_time` datetime default NULL,
  PRIMARY KEY  (`id`),
  UNIQUE KEY `id` (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1


Запрос:
Код

SELECT * FROM `Price`
GROUP BY `Price`.`Id_product`
HAVING COUNT(*) > 1
AND (`Price`.`date_time` < max(`Price`.`date_time`))


Нужно все выбранные запросом записи удалить. Что-то не могу сообразить, как..
--------------------
WBR, oksale
PM MAIL ICQ   Вверх
Illuminaty
Дата 18.8.2006, 09:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


/*Антон Захаров*/
***


Профиль
Группа: Комодератор
Сообщений: 1238
Регистрация: 19.3.2005
Где: Россия, Казань

Репутация: 3
Всего: 56



Что должно удалиться? Словами опиши..
PM MAIL ICQ   Вверх
Ignat
Дата 18.8.2006, 09:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Флудератор
****


Профиль
Группа: Экс. модератор
Сообщений: 4030
Регистрация: 19.4.2004
Где: غيليندزيك مدينة

Репутация: 21
Всего: 73



При группировке ты же получаешь не записи, а группы. То есть ты хочешь удалить все записи, входящие в те группы, которые попали в условия HAVING?


--------------------
Теперь при чем :P
PM   Вверх
oksale
Дата 18.8.2006, 09:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 192
Регистрация: 17.6.2005
Где: Санкт-Петербург

Репутация: 1
Всего: 9



Таблица обновляется раз в полчаса. 
В результате к конце дня получается, что есть много записей с одним id_product, но с разными (меняющимися) остальными значениями.

Должны удалиться все записи, кроме добавленных последними.
Но если ранее добавленная запись уникальна (т.е. при обновлениях она добавилась только однажды) - ее не удалять.

2 Ignat: да, нужно удалить записи, попадающие под эти условия.

Это сообщение отредактировал(а) oksale - 18.8.2006, 09:50
--------------------
WBR, oksale
PM MAIL ICQ   Вверх
Ignat
Дата 18.8.2006, 09:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Флудератор
****


Профиль
Группа: Экс. модератор
Сообщений: 4030
Регистрация: 19.4.2004
Где: غيليندزيك مدينة

Репутация: 21
Всего: 73



Код

DELETE FROM `Price`
WHERE `Id_product`IN 
( 
    SELECT `Id_product`
    FROM
    (
        SELECT * FROM `Price`
        GROUP BY `Price`.`Id_product`
        HAVING COUNT(*) > 1
        AND (`Price`.`date_time` < max(`Price`.`date_time`))
    ) AS `temp`
);


Не очень красиво, но будут удалены группы, которые попали под условия. А если нужно 
Цитата(oksale @  18.8.2006,  10:49 Найти цитируемый пост)
кроме добавленных последними.

то тут нужно изменить SELECT... Пока не придумал как...


--------------------
Теперь при чем :P
PM   Вверх
oksale
Дата 18.8.2006, 10:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 192
Регистрация: 17.6.2005
Где: Санкт-Петербург

Репутация: 1
Всего: 9



Цитата
You can't specify target table 'price' for update in FROM clause



--------------------
WBR, oksale
PM MAIL ICQ   Вверх
Ignat
Дата 18.8.2006, 10:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Флудератор
****


Профиль
Группа: Экс. модератор
Сообщений: 4030
Регистрация: 19.4.2004
Где: غيليندزيك مدينة

Репутация: 21
Всего: 73



А версия MySQL?
У меня 5.0.18 - запрос прошел успешно.


--------------------
Теперь при чем :P
PM   Вверх
oksale
Дата 18.8.2006, 10:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 192
Регистрация: 17.6.2005
Где: Санкт-Петербург

Репутация: 1
Всего: 9



версия 4.1.18
--------------------
WBR, oksale
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MySQL | Следующая тема »


 




[ Время генерации скрипта: 0.0508 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.