|
| |
|
|
| |
для: tAleks
(23.11.2006 в 16:20)
| | |
DELETE pict_groups
FROM pict_groups dl
LEFT JOIN pict_groups ch ON dl.code_group =ch.code_parent
WHERE dl.code_group = $code
AND ch.code_parent IS NULL
AND NOT dl.code_group IN (SELECT code_group as pc FROM pict WHERE pc = $code)
|
| |
| |
|
|
| |
|
|
| |
для: tAleks
(23.11.2006 в 16:20)
| | | Прошу прощения. C IN() перепутал. | |
| |
|
|
| |
|
|
| |
для: Trianon
(23.11.2006 в 14:52)
| | | >непонятно, какое поле в таблице pict Вы проверяете.
>Вообще конструкция EXISTS (SELECT * недопустима.
>Вместо звездочки надо указывать конкретное поле.
Как это недопустима? А в книжке "Самоучитель MySQL 5", авторами которой являются М. Кузнецов и И. Симдянов, написано что можно.
И в книжке "MySQL Справочник по языку", написано: "MySQL игнорирует спиок SELECT в таком подзапросе, поэтому это не важно". | |
| |
|
|
| |
|
|
| |
для: tAleks
(23.11.2006 в 15:53)
| | | Пожалуйста, читайте на здоровье:
http://www.mysql.ru/docs/pautov/sql.htm#Select
Вас будет интересовать раздел "Псевдонимы". | |
| |
|
|
| |
|
|
| |
для: AlexelA
(23.11.2006 в 15:42)
| | | ><pict_groups a> это действительно псевдоним, но для таблицы
>оператор <as> используется для псевдонима столбца
и еще, что-то я не видал ни где, про назначение псевдонимов таблицам. Где это написано? Дайте ссылку ознакомиться. | |
| |
|
|
| |
|
|
| |
для: AlexelA
(23.11.2006 в 15:42)
| | | Не, ну так-то конечно 2 запроса будут выполнять требуемую функцию, но это ж длинно.... а хочется по короче...
Пока остановлюсь на 2 запросах, но тема остается актуальной.... :)
Всем, кто прилагал усилия, и еще приложит - спасибо! | |
| |
|
|
| |
|
|
| |
для: tAleks
(23.11.2006 в 15:15)
| | | <pict_groups a> это действительно псевдоним, но для таблицы
оператор <as> используется для псевдонима столбца
Посмотрев на ошибку, могу сказать лишь одно,
мы пытаемся одновременно произвести чтение
и запись в одну и ту же таблицу, что некорректно.
Простым вариантом будет создание двух запросов:
первым вы определите имеются ли вложения в группе
вторым их удалите
Если такой вариант подходит - прекрасно, нет - будем думать дальше | |
| |
|
|
| |
|
|
| |
для: AlexelA
(23.11.2006 в 14:46)
| | | нифига не работает.
Ругается вот такими словами:
1093: You can't specify target table 'pict_groups' for update in FROM clause
|
На сколько я понимаю, это ему не нравиться 'pict_groups' во вложенном запросе. | |
| |
|
|
| |
|
|
| |
для: AlexelA
(23.11.2006 в 14:46)
| | | >Итоговое выражение
че то я вот это не понял:
>DELETE FROM pict_groups a WHERE a.code_group = ".$code."
>AND 1 > (select count(*) from pict_groups b WHERE code_parent = ".$code."
> and a.code_group = b.code_group)
>AND NOT EXISTS (SELECT * FROM pict WHERE code_group = ".$code." LIMIT 1)
>LIMIT 1
"pict_groups a". "а" - это что, псевдоним? Но на сколько я заню, псеводнимы пишутся так: "pict_groups AS a".
Или это из какой-то другой СУБД? Или что это вообще такое? | |
| |
|
|
| |
|
|
| |
для: tAleks
(23.11.2006 в 14:33)
| | | непонятно, какое поле в таблице pict Вы проверяете.
Вообще конструкция EXISTS (SELECT * недопустима.
Вместо звездочки надо указывать конкретное поле. | |
| |
|
|
|