Ось сценарій для створення моїх таблиць:
CREATE TABLE clients (
client_i INT(11),
PRIMARY KEY (client_id)
);
CREATE TABLE projects (
project_id INT(11) UNSIGNED,
client_id INT(11) UNSIGNED,
PRIMARY KEY (project_id)
);
CREATE TABLE posts (
post_id INT(11) UNSIGNED,
project_id INT(11) UNSIGNED,
PRIMARY KEY (post_id)
);
У своєму PHP-коді під час видалення клієнта я хочу видалити всі публікації проектів:
DELETE
FROM posts
INNER JOIN projects ON projects.project_id = posts.project_id
WHERE projects.client_id = :client_id;
Таблиця повідомлень не має зовнішній ключ client_id
, тільки project_id
. Я хочу видалити публікації в минулих проектах client_id
.
Зараз це не працює, оскільки жодні публікації не видаляються.
DELETE posts FROM posts JOIN projects ...
, а не IN (subquery)
візерунок. (Відповідь Єгосефа дає приклад бажаного шаблону.)
alias
для назви таблиці та використовувати це.