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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> удаление из таблицы используя подзапрос 
:(
    Опции темы
mullih
Дата 29.3.2009, 17:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

Репутация: нет
Всего: 2



Доброго времени суток

запрос
Код

select * FROM `cats` as c WHERE c.sortorderId like
(SELECT concat(d.sortorderId, "025", "%") FROM `cats` d where d.id = 025);

отрабатывается прекрасно

а тоже самое для удаления -- ругается
Код

delete FROM `cats` as c WHERE c.sortorderId like
(SELECT concat(d.sortorderId, "025", "%") FROM `cats` d where d.id = 025);


подскажите пожалуйсто как изменить запрос
заранее благодарен
PM MAIL WWW Skype   Вверх
skyboy
Дата 29.3.2009, 18:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 41
Всего: 260



как именно ругается? почему не приводишь сообщение об ошибке?

Добавлено через 1 минуту и 51 секунду
небось, что нельзя в подзапросе использовать таблицу, из которой собираешься удалять?
PM MAIL   Вверх
mullih
Дата 29.3.2009, 19:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

Репутация: нет
Всего: 2



You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'as c WHERE c.sortorderId like (SELECT concat(d.sortorderId, "025", "%") FROM `c' at line 1

ErrorNr.
1064

Это сообщение отредактировал(а) mullih - 29.3.2009, 19:18
PM MAIL WWW Skype   Вверх
skyboy
Дата 29.3.2009, 23:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 41
Всего: 260



я так понял из мана:
 
Цитата

If table aliases are used, they should be declared in the table_references part of the statement. Elsewhere in the statement, aliases references are allowed but should not be declared. 
 
что алиасы можно использовать только в мультитабличном delete-запросе. потому запрос я бы перестроил так:
Код

delete c.* FROM `cats` as c ...

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


 




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


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

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