Форум программистов, компьютерный форум, киберфорум
MySQL
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
 Аватар для CanekXXI
0 / 0 / 0
Регистрация: 19.02.2013
Сообщений: 22

Сложный запрос на удаление

10.05.2013, 17:32. Показов 2278. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем доброго времени суток.
Проблема заключается в сложном запросе на удаление из нескольких таблиц:
Вот таблицы:
account
id int(11) NULL auto_increment
user varchar(80) cp1251_general_ci
passwrd varchar(80) cp1251_general_ci
Vis varchar(80) cp1251_general_ci
imya varchar(30) cp1251_general_ci
family varchar(30) cp1251_general_ci
dateb varchar(30) cp1251_general_ci
country varchar(30) cp1251_general_ci
photo varchar(50) cp1251_general_ci
//----------------------------------------------------
blogs
id int(11) NULL auto_increment
user varchar(30) cp1251_general_ci
Zagolovok blob
Blog mediumblob
daten varchar(10) cp1251_general_ci
//---------------------------------------------------
comment
id int(11) NULL auto_increment
user varchar(80) cp1251_general_ci
id_blog int(11)
commentos blob
daten varchar(10) cp1251_general_ci
//---------------------------------------------------
Zapros
ID int(11) NULL auto_increment
user varchar(80) cp1251_general_ci
prich blob
yes int(1)


Задача заключается в том чтоб когда я удаляю из таблицы account пользователя, то он удалялся бы из остальных таблиц
Вот обработчик кнопки удаления:
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
if(isset($_REQUEST["button2"]))
        {
        //----- удалить ------------------------
        $dblocation="localhost";
        $dbname="blogopadt";
        $dbuser="xxi";
        $dbpasswd="1";
        $dbcnx=@mysql_connect($dblocation,$dbuser,$dbpasswd);
        if(!$dbcnx)
        {
            exit("<P> B настоящий момент сервер базы данных не доступен,поэтому корректное отображение таблицы не возможно  </P>");
        }
        if(!@mysql_select_db($dbname,$dbcnx))
        {
            exit("<P> B настоящий момент сервер базы данных не доступен,поэтому корректное отображение таблицы не возможно  </P>");
        }
        $query='SELECT * FROM account';
        $result=mysql_query($query) or die ("ошибка при выполнении запроса:".mysql_error());
        while($row=mysql_fetch_array($result))
            {
            $query1='SELECT user AS accountuser FROM account';
            $result1=mysql_query($query1) or die ("ошибка при выполнении запроса:".mysql_error());
            $row1=mysql_fetch_array($result1);
                $query2="DELETE FROM account WHERE id='".$_REQUEST['Radio']."'";
                $query3="DELETE FROM blogs, comment, Zapros WHERE blogs.user='".$row1['accountuser']."' AND comment.user='".$row1['accountuser']."' AND Zapros.user='".$row1['accountuser']."'";
                $result3=mysql_query($query3) or die ("ошибка при выполнении запроса:".mysql_error());
                $result2=mysql_query($query2) or die ("ошибка при выполнении запроса:".mysql_error());
            }
        }
По выполнении обработчика выдается ошибка:

ошибка при выполнении запроса: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 'WHERE blogs.user='Andrew' AND comment.user='Andrew' AND Zapros.user='Andrew'' at line 1

Подскажите, что я делаю не так и скажите как правильно.
Заранее спасибо)
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
10.05.2013, 17:32
Ответы с готовыми решениями:

Сложный запрос на удаление дублирующихся строк
Имеется такой запрос (где id - уникальный ключ и автоинкремент) : DELETE FROM `myTable` WHERE `id` IN (SELECT * FROM (SELECT `id` FROM...

Сложный запрос
Добрыйь день. Есть база с таблицами: Команды, Игроки, Матчи и информация по голам, во вложении скрины. Так вот. Написал запрос...

Сложный запрос
Всем добрый день. К примеру имеется таблица 'оплата', которая имеет поля 'код ученика' и 'код месяца'. 'Код ученика' и 'код месяца' это...

7
 Аватар для Vovan-VE
13210 / 6599 / 1041
Регистрация: 10.01.2008
Сообщений: 15,069
11.05.2013, 08:10
MySQL
1
2
3
4
5
6
7
8
9
DELETE `a`, `b`, `c`, `z`
FROM `account` AS `a`
    LEFT JOIN `blog` AS `b`
        ON `b`.`user` = `a`.`id`
    LEFT JOIN `comment` AS `c`
        ON `c`.`user` = `a`.`id`
    LEFT JOIN `Zapros` AS `z`
        ON `z`.`user` = `a`.`id`
WHERE `a`.`id` = 42
0
 Аватар для CanekXXI
0 / 0 / 0
Регистрация: 19.02.2013
Сообщений: 22
11.05.2013, 12:24  [ТС]
А почему это:
Цитата Сообщение от Vovan-VE Посмотреть сообщение
`b`.`user` = `a`.`id`
?

Добавлено через 7 минут
А если
Code
1
`b`.`user` = `a`.`user`
, то отлично работает.
Безумно благодарен!
0
 Аватар для Vovan-VE
13210 / 6599 / 1041
Регистрация: 10.01.2008
Сообщений: 15,069
11.05.2013, 14:39
Цитата Сообщение от CanekXXI Посмотреть сообщение
А почему это
Не обратил внимания на типы. Привязывать элементы к имени юзера, а не к id - странно. Зачем тогда id вообще нужен, да еще и primary auto increment? Не понятно. И имя, выходит, менять нельзя вообще ни при каких условиях (если только не внешний ключ on update cascade).
0
 Аватар для CanekXXI
0 / 0 / 0
Регистрация: 19.02.2013
Сообщений: 22
12.05.2013, 10:57  [ТС]
А можешь написать запрос на изменение записей во всех таблицах?
0
 Аватар для Vovan-VE
13210 / 6599 / 1041
Регистрация: 10.01.2008
Сообщений: 15,069
12.05.2013, 11:02
Цитата Сообщение от CanekXXI Посмотреть сообщение
А можешь написать запрос на изменение записей во всех таблицах?
На обновление - да, можно - аналогично JOIN'ами.
MySQL
1
2
3
4
5
6
7
8
9
10
11
UPDATE
    `table1`
    JOIN `table2` ON ...
    LEFT JOIN `table3` ON ...
    ...
SET `table1`.`foo` = 42
  , `table1`.`bar` = 37
  , `table3`.`lol` = 19
  , `table2`.`baz` = 97
  ...
WHERE ...
0
 Аватар для CanekXXI
0 / 0 / 0
Регистрация: 19.02.2013
Сообщений: 22
12.05.2013, 18:51  [ТС]
MySQL
1
2
3
4
5
6
7
8
9
10
11
UPDATE
    `table1`
    JOIN `table2` ON ...
    LEFT JOIN `table3` ON ...
    ...
SET `table1`.`foo` = 42
  , `table1`.`bar` = 37
  , `table3`.`lol` = 19
  , `table2`.`baz` = 97
  ...
WHERE ...
Что нужно писать после ON ?
И в чем должна быть разница между тем, что я напишу в SET ?
0
 Аватар для Vovan-VE
13210 / 6599 / 1041
Регистрация: 10.01.2008
Сообщений: 15,069
12.05.2013, 19:01
Цитата Сообщение от CanekXXI Посмотреть сообщение
Что нужно писать после ON ?
Условие объединения таблиц. См. синтаксис в документации. http://dev.mysql.com/doc/refman/5.0/en/update.html
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
12.05.2013, 19:01
Помогаю со студенческими работами здесь

Сложный запрос
Доброго времени суток! Подскажите куда копать... очень сложно сходу в такое вникнуть, а надо. CREATE TABLE `quests` ( `uid`...

Сложный запрос
Есть такая структура данных необходимо сделать выборку которая будет содержать id литератури и количество которое не списано пробовал...

Сложный запрос в БД
доброго времени всем.. есть некоторые трудности при построении запроса в бд подробнее о проблеме: есть 2 таблицы (записи и категории)...

Сложный запрос (IN)
было все просто и понятно $count = $db-&gt;select('SELECT COUNT(*) FROM {pref}c_content WHERE category IN ('.implode(',', $arr_cat).') AND...

Сложный запрос
есть таблица содержащая столбцы (Номер,Сотрудник,Сумма,Вид операции,Дата) нужен запрос по годам с подведением итогов для каждого сотрудника...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru