Ecco lo script per creare le mie tabelle:
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)
);
Nel mio codice PHP, quando elimino un client, voglio eliminare tutti i post dei progetti:
DELETE
FROM posts
INNER JOIN projects ON projects.project_id = posts.project_id
WHERE projects.client_id = :client_id;
La tabella di messaggi non dispone di una chiave esterna client_id
, solo project_id
. Voglio eliminare i post nei progetti che hanno superato client_id
.
Al momento non funziona perché non vengono eliminati post.
DELETE posts FROM posts JOIN projects ...
, piuttosto che un IN (subquery)
modello. (La risposta di Yehosef fornisce un esempio del modello preferito.)
alias
il nome della tabella e usarlo.