2010-10-19 2 views
1

Привет, я новичок в PHP & MySQL и мне было интересно, как я могу удалить все записи из этих двух таблиц ниже, используя PHP & MySQL?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) 
); 

нас таблица значений таблицы

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 
+0

Серьезно? Вы никогда не рассматривали использование паролей 'DELETE'? – Tarka

+0

@Slokun Серьезно, почему вы серьезно оставили комментарий? – HELP

+0

@noob, потому что это похоже на то, что вы могли решить самостоятельно с помощью простого поиска в Google «MySQL удалить две таблицы». – Tarka

ответ

1

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

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

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

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

+1

Как мои таблицы неуместны? Пользователь не делится навыками. – HELP

+0

Извините, если у меня что-то не так. Но у вас есть «соединительная» таблица (нас), связанная с пользователями и навыками. Это подразумевает отношение m: n между пользователем и навыком, что означает, что многие пользователи могут иметь одинаковый навык (и, конечно, наоборот). Но, как я предполагал, и вы подтвердили, вы хотели бы иметь отношение 1: m между пользователем и навыком: у одного пользователя может быть несколько навыков; каждое умение принадлежит одному и только одному пользователю. Итак, мне нужно всего 2 таблицы вместо 3. Таблица пользователей и таблица навыков, содержащая внешний пользователь user_id. – Flinsch

1

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

DELETE a, b 
    FROM ls a 
    JOIN us b ON b.skill_id = a.id 
WHERE b.user_id = 3 
Смежные вопросы