MySQLで結合して削除する 質問する

MySQLで結合して削除する 質問する

テーブルを作成するためのスクリプトは次のとおりです。

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

投稿が削除されていないため、現在は機能していません。

ベストアンサー1

テーブルからエントリを削除することを指定するだけですposts

DELETE posts
FROM posts
INNER JOIN projects ON projects.project_id = posts.project_id
WHERE projects.client_id = :client_id

編集:詳細については、この代替回答

おすすめ記事