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.)
aliasil nome della tabella e usarlo.