Intereting Posts
Просмотр фрагментов страницы с помощью PHP PHP: тестирование существования ячейки в многомерном массиве Codeigniter 2.0 контроллер по умолчанию для подпапки не работает на сервере, но работает в localhost Пересечение всех свойств объекта php Поиск PHP через вложенный массив для удаления элемента по имени Отправить письмо от Hotmail, используя php Есть ли простой способ для пользователей распечатать Flash (Open Flash Charts) из своего браузера? Интеграция между Zend Framework и Facebook Connect Как конвертировать между часовыми поясами в PHP с использованием класса DateTime? Проверка в Zend Framework 2 с Doctrine 2 как разобрать файл csv, чтобы сначала захватить имена столбцов, а затем строки, относящиеся к нему? Пользовательское мобильное меню в Drupal 7 не может получить доступ к дочерним ссылкам PHP HTML Formatter Beautifier Обновить DOM с помощью jquery после вызова AJAX Что должен представлять пакет в Symfony2?

PHP и MySQL – как удалить записи пользователей из двух таблиц

Привет, я новичок в PHP и MySQL, и мне было интересно, как я могу удалить все записи user_id 3 из этих двух таблиц ниже, используя PHP и MySQL?

Мои таблицы MySQL

 CREATE TABLE ls ( id INT UNSIGNED NOT NULL AUTO_INCREMENT, skill VARCHAR(255) DEFAULT NULL, experience VARCHAR(22) DEFAULT NULL, self_grade VARCHAR(10) DEFAULT NULL, date_created DATETIME NOT NULL, date_updated DATETIME DEFAULT NULL, PRIMARY KEY (id) ); CREATE TABLE us ( id INT(13) UNSIGNED NOT NULL AUTO_INCREMENT, skill_id INT(13) UNSIGNED NOT NULL, user_id INT(13) UNSIGNED NOT NULL, PRIMARY KEY (id) ); 

us table values

 id skill_id user_id 9 7 3 10 8 3 11 9 3 12 10 3 13 17 6 

Значения таблицы ls

 id skill experience self_grade date_created date_updated 7 html 5 years A 2010-10-19 07:11:08 2010-10-19 07:12:06 8 jquery 10 years B 2010-10-19 07:11:27 2010-10-19 07:12:06 9 css 1 year NULL 2010-10-19 07:11:38 2010-10-19 07:12:06 10 php 2 years C 2010-10-19 07:13:05 NULL 17 php 2 years C 2010-10-19 07:19:05 NULL 

Вы можете получить все строки, принадлежащие user_id = 3 а затем создать инструкцию DELETE сгенерированным WHERE .

Но, однако, мне интересно, есть ли у вас неправильный дизайн таблицы, как у вас есть: n отношение между пользователем и умением, и вы хотите удалить все навыки, с которыми связан пользователь с id 3. Но это подразумевает соотношение 1: m между пользователем и навыком (1 пользователь имеет несколько навыков, а не делится навыками с другими). Или, может быть, у меня что-то не так …?

MySQL поддерживает удаление нескольких таблиц, используйте:

 DELETE a, b FROM ls a JOIN us b ON b.skill_id = a.id WHERE b.user_id = 3 

Да, вы можете использовать оператор DELETE с несколькими таблицами, например.

 DELETE FROM ls, us USING ls JOIN us ON us.skill_id = ls.id WHERE ls.user_id = 3