Đâ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.)
aliascho tên bảng và sử dụng đó.