Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Как сделать такой запрос?

Сообщения:  [1-10]    [11-20]  [21-21] 

 
 автор: Trianon   (23.11.2006 в 17:04)   письмо автору
 
   для: 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)

   
 
 автор: Trianon   (23.11.2006 в 16:53)   письмо автору
 
   для: tAleks   (23.11.2006 в 16:20)
 

Прошу прощения. C IN() перепутал.

   
 
 автор: tAleks   (23.11.2006 в 16:20)   письмо автору
 
   для: Trianon   (23.11.2006 в 14:52)
 

>непонятно, какое поле в таблице pict Вы проверяете.
>Вообще конструкция EXISTS (SELECT * недопустима.
>Вместо звездочки надо указывать конкретное поле.

Как это недопустима? А в книжке "Самоучитель MySQL 5", авторами которой являются М. Кузнецов и И. Симдянов, написано что можно.
И в книжке "MySQL Справочник по языку", написано: "MySQL игнорирует спиок SELECT в таком подзапросе, поэтому это не важно".

   
 
 автор: AlexelA   (23.11.2006 в 16:05)   письмо автору
 
   для: tAleks   (23.11.2006 в 15:53)
 

Пожалуйста, читайте на здоровье:
http://www.mysql.ru/docs/pautov/sql.htm#Select
Вас будет интересовать раздел "Псевдонимы".

   
 
 автор: tAleks   (23.11.2006 в 15:53)   письмо автору
 
   для: AlexelA   (23.11.2006 в 15:42)
 

><pict_groups a> это действительно псевдоним, но для таблицы
>оператор <as> используется для псевдонима столбца

и еще, что-то я не видал ни где, про назначение псевдонимов таблицам. Где это написано? Дайте ссылку ознакомиться.

   
 
 автор: tAleks   (23.11.2006 в 15:47)   письмо автору
 
   для: AlexelA   (23.11.2006 в 15:42)
 

Не, ну так-то конечно 2 запроса будут выполнять требуемую функцию, но это ж длинно.... а хочется по короче...

Пока остановлюсь на 2 запросах, но тема остается актуальной.... :)

Всем, кто прилагал усилия, и еще приложит - спасибо!

   
 
 автор: AlexelA   (23.11.2006 в 15:42)   письмо автору
 
   для: tAleks   (23.11.2006 в 15:15)
 

<pict_groups a> это действительно псевдоним, но для таблицы
оператор <as> используется для псевдонима столбца

Посмотрев на ошибку, могу сказать лишь одно,
мы пытаемся одновременно произвести чтение
и запись в одну и ту же таблицу, что некорректно.
Простым вариантом будет создание двух запросов:
первым вы определите имеются ли вложения в группе
вторым их удалите
Если такой вариант подходит - прекрасно, нет - будем думать дальше

   
 
 автор: tAleks   (23.11.2006 в 15:15)   письмо автору
 
   для: AlexelA   (23.11.2006 в 14:46)
 

нифига не работает.

Ругается вот такими словами:

1093: You can't specify target table 'pict_groups' for update in FROM clause


На сколько я понимаю, это ему не нравиться 'pict_groups' во вложенном запросе.

   
 
 автор: tAleks   (23.11.2006 в 15:07)   письмо автору
 
   для: 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".
Или это из какой-то другой СУБД? Или что это вообще такое?

   
 
 автор: Trianon   (23.11.2006 в 14:52)   письмо автору
 
   для: tAleks   (23.11.2006 в 14:33)
 

непонятно, какое поле в таблице pict Вы проверяете.
Вообще конструкция EXISTS (SELECT * недопустима.
Вместо звездочки надо указывать конкретное поле.

   

Сообщения:  [1-10]    [11-20]  [21-21] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования