Đây là kịch bản để tạo các bảng của tôi:
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)
);
Trong mã PHP của tôi, khi xóa một máy khách, tôi muốn xóa tất cả các bài viết của dự án:
DELETE
FROM posts
INNER JOIN projects ON projects.project_id = posts.project_id
WHERE projects.client_id = :client_id;
Bảng bài viết không có khóa ngoại client_id
, chỉ project_id
. Tôi muốn xóa các bài viết trong các dự án đã thông qua client_id
.
Điều này không hoạt động ngay bây giờ vì không có bài viết bị xóa.
DELETE posts FROM posts JOIN projects ...
, chứ không phải là một IN (subquery)
mẫu. (Câu trả lời từ Yehosef đưa ra một ví dụ về mẫu ưa thích.)
alias
cho tên bảng và sử dụng đó.