Aquí está el script para crear mis tablas:
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)
);
En mi código PHP, al eliminar un cliente, quiero eliminar todas las publicaciones de proyectos:
DELETE
FROM posts
INNER JOIN projects ON projects.project_id = posts.project_id
WHERE projects.client_id = :client_id;
La tabla de publicaciones no tiene una clave foránea client_id
, solo project_id
. Quiero eliminar las publicaciones en proyectos que han pasado client_id
.
Esto no funciona en este momento porque no se eliminan las publicaciones.
DELETE posts FROM posts JOIN projects ...
, en lugar de un IN (subquery)
patrón. (La respuesta de Yehosef da un ejemplo del patrón preferido.)
alias
para el nombre de la tabla y usar eso.