Aqui está o script para criar minhas tabelas:
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)
);
No meu código PHP, ao excluir um cliente, desejo excluir todas as postagens de projetos:
DELETE
FROM posts
INNER JOIN projects ON projects.project_id = posts.project_id
WHERE projects.client_id = :client_id;
A tabela mensagens não tem uma chave estrangeira client_id
, única project_id
. Quero excluir as postagens em projetos que passaram client_id
.
No momento, isso não está funcionando porque nenhuma postagem foi excluída.
DELETE posts FROM posts JOIN projects ...
, e não um IN (subquery)
padrão. (A resposta de Yehosef dá um exemplo do padrão preferido.)
alias
o nome da tabela e usá-lo.