Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.03.2013, 15:26   #1
manula
Форумчанин
 
Регистрация: 17.04.2011
Сообщений: 168
По умолчанию Удаление из нескольких таблиц(Delete)

Здравствуйте товарищи не могли бы вы мне подсказать, в чем ошибка написания моего запроса, я использую сложный запрос на удаление информации из двух разных таблиц.
Вот мой запрос:
PHP код:
$query "DELETE From tb_main, tb_zakaz WHERE tb_main.org = '$org' && tb_zakaz.org = '$org'"
$org = Наименование организации
В обоих таблицах название этих полей совпадают.
Ошибка такого плана:
Query failed: ERROR: syntax error at or near "'tb_main'" LINE 1
manula вне форума Ответить с цитированием
Старый 01.03.2013, 20:09   #2
Johnatan
Antimoderаtoris
Участник клуба
 
Регистрация: 08.02.2008
Сообщений: 1,251
По умолчанию

Если внимательно почитать документацию, то сразу станет ясно, что вы забыли дописать USING
В вашем случае это будет
PHP код:
$query "DELETE FROM tb_main, tb_zakaz USING tb_main, tb_zakaz WHERE tb_main.org = '$org' && tb_zakaz.org = '$org'"
98% из тысячи моих постов сделаны в профильном подфоруме. Я не накручиваю свои посты болтанием в "курилке", а ты?
Johnatan вне форума Ответить с цитированием
Старый 04.03.2013, 09:24   #3
manula
Форумчанин
 
Регистрация: 17.04.2011
Сообщений: 168
По умолчанию

Я не знаю в чем проблема может вы мне все таки объясните, исправил запрос, добавил USING все равно выдает ошибку:
Query failed: ERROR: syntax error at or near "," LINE 1
Суть в том что есть 2 таблицы:
1) tb_main (12 полей)
2) tb_zakaz (3 поля)
Нужно сложным запросом удалить записи из обоих таблиц, где поле org (наименование поля совпадает и в 1 и во 2 таблице) равно $org- переменной которой передается значение.
manula вне форума Ответить с цитированием
Старый 04.03.2013, 14:35   #4
manula
Форумчанин
 
Регистрация: 17.04.2011
Сообщений: 168
По умолчанию

Попробовал таким образом выполнить запрос, работает, но почему то удаляется запись только из одной таблицы, из tb_main а из второй не удаляется, вот запрос:
PHP код:
DELETE FROM tb_main USING tb_zakaz WHERE tb_zakaz.org '$org' AND tb_main.org '$org' 
manula вне форума Ответить с цитированием
Старый 04.03.2013, 15:38   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

manula, какая у Вас версия СУБД MySQL ?

попробуйте так:
Код:
DELETE FROM tb_main, tb_zakaz 
  WHERE tb_zakaz.org =  tb_main.org
      and tb_main.org = '.$org.'
Serge_Bliznykov вне форума Ответить с цитированием
Старый 05.03.2013, 08:09   #6
manula
Форумчанин
 
Регистрация: 17.04.2011
Сообщений: 168
По умолчанию

Serge_Bliznykov я извиняюсь за кросспостинг, просто точно не знал к какой теме отнести данный вопрос поэтому написал в двух, у меня используется СУБД PostgreSQL 9.1, за возможный вариант благодарю, щас попробую, если получится, тогда отпишу сюда.
manula вне форума Ответить с цитированием
Старый 06.03.2013, 14:36   #7
manula
Форумчанин
 
Регистрация: 17.04.2011
Сообщений: 168
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
manula, какая у Вас версия СУБД MySQL ?

попробуйте так:
Код:
DELETE FROM tb_main, tb_zakaz 
  WHERE tb_zakaz.org =  tb_main.org
      and tb_main.org = '.$org.'
Попробовал таким образом ругается на "," после tb_main, если я исправляю запятую на USING запрос выполняется, но удаляется запись из одной таблицы, во второй она остается.
manula вне форума Ответить с цитированием
Старый 06.03.2013, 15:24   #8
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

меня терзают смутные сомнения..

manula, об операции DELETE, которая позволяет в одном операторе удалить данные не из одной, а из нескольких таблиц, я впервые узнал из данной темы (пост #2). Но в нём речь идёт про MySQL.

в других СУБД команда DELETE удаляет данные только из ОДНОЙ таблице
вот, например,
PostgreSQL: Documentation: 9.1: DELETE
Где Вы увидели, что может быть удалены записи из двух таблиц?
удаляйте поочерёдно: сначала из одной таблицы, потом - из другой...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 06.03.2013, 15:41   #9
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,568
По умолчанию

Цитата:
удаляйте поочерёдно: сначала из одной таблицы, потом - из другой...
Ну и совет по этому поводу. Нельзя помещать в PHP-функцию sql_query более одного запроса. Рекомендую поступать так:
Код:
mysql_query(<запрос 1>);
mysql_query(<запрос 2>);
Вадим Мошев вне форума Ответить с цитированием
Старый 06.03.2013, 16:31   #10
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,158
По умолчанию

Цитата:
Сообщение от Вадим Мошев Посмотреть сообщение
Ну и совет по этому поводу. Нельзя помещать в PHP-функцию sql_query более одного запроса. Рекомендую
... и почему это нельзя? религия не позволяет? обоснуйте?
ADSoft вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
объединение таблиц из нескольких книг Aptem89 Microsoft Office Excel 1 13.01.2013 19:44
обединение нескольких таблиц Rgena84 Microsoft Office Excel 0 03.11.2011 06:40
Удаление объекта производного класса оператором delete Trinock Общие вопросы C/C++ 12 22.09.2011 13:41
Запрос с нескольких таблиц Lokos БД в Delphi 3 15.04.2011 07:43
Удаление из нескольких таблиц qwerty1301 Microsoft Office Access 17 05.05.2010 11:34