Oto skrypt do tworzenia moich tabel:
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)
);
W moim kodzie PHP, usuwając klienta, chcę usunąć wszystkie posty projektów:
DELETE
FROM posts
INNER JOIN projects ON projects.project_id = posts.project_id
WHERE projects.client_id = :client_id;
Tabela stanowisk nie ma klucza obcego client_id
, tylko project_id
. Chcę usunąć posty w projektach, które przeszły client_id
.
To nie działa teraz, ponieważ żadne posty nie są usuwane.
DELETE posts FROM posts JOIN projects ...
raczej niż IN (subquery)
wzór. (Odpowiedź Yehosefa podaje przykład preferowanego wzoru.)
alias
nazwy tabeli i użyć jej.