내 테이블을 작성하는 스크립트는 다음과 같습니다.
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)
);
내 PHP 코드에서 클라이언트를 삭제할 때 모든 프로젝트 게시물을 삭제하고 싶습니다.
DELETE
FROM posts
INNER JOIN projects ON projects.project_id = posts.project_id
WHERE projects.client_id = :client_id;
포스트 테이블은 외래 키를 가지고 있지 않습니다 client_id
만 project_id
. 통과 한 프로젝트에서 게시물을 삭제하고 싶습니다 client_id
.
게시물이 삭제되지 않아 지금 작동하지 않습니다.
DELETE posts FROM posts JOIN projects ...
아니라 IN (subquery)
입니다. (Yehosef에서 대답이 바람직한 패턴의 일례를 제공한다.)
alias
테이블 이름으로 도 사용할 수 있습니다 .