Hier ist das Skript zum Erstellen meiner Tabellen:
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)
);
In meinem PHP-Code möchte ich beim Löschen eines Clients alle Projektbeiträge löschen:
DELETE
FROM posts
INNER JOIN projects ON projects.project_id = posts.project_id
WHERE projects.client_id = :client_id;
Die Beiträge Tabelle nicht über einen Fremdschlüssel client_id
nur project_id
. Ich möchte die Beiträge in Projekten löschen, die bestanden haben client_id
.
Dies funktioniert momentan nicht, da keine Beiträge gelöscht werden.
DELETE posts FROM posts JOIN projects ...
eher ein als ein IN (subquery)
Muster. (Die Antwort von Yehosef gibt ein Beispiel für das bevorzugte Muster.)
alias
den Tabellennamen verwenden und diesen verwenden.