如何 select 取消链接图像并从多个表中删除项目?
How to select unlink image and delete items from multiple tables?
我正在尝试删除其中包含项目的类别。
我有 4 张桌子:
类别
catId
帖子
post_id
图片
图片_post_id
标签
tag_post_id
我的 sql 查询对于 select 和取消链接图像是这样的:
SELECT * FROM categories, posts, images, comments, tags
WHERE catId = 25
AND post_catId = catId
AND image_post_id = post_id
AND comment_post_id = post_id
AND tag_cat_id = catId
AND tag_post_id = post_id
但它不显示帖子,类别中有超过 100 个帖子。
当我只在类别中搜索并发布时,它会显示所有内容。
您正在使用 INNER JOIN,当在所有 4 个表中找到相关记录时,您将获得结果。你需要使用 LEFT JOIN,类似这样:
SELECT * FROM categories
LEFT JOIN posts on post_catId = catId
LEFT JOIN images ON image_post_id = post_id
LEFT JOIN comments ON comment_post_id = post_id
LEFT JOIN tags ON tag_cat_id = catId AND tag_post_id = post_id
WHERE catId = 25;
然后您将看到与您的 catid=25 相关的所有数据。
我正在尝试删除其中包含项目的类别。
我有 4 张桌子:
类别
catId
帖子
post_id
图片
图片_post_id
标签
tag_post_id
我的 sql 查询对于 select 和取消链接图像是这样的:
SELECT * FROM categories, posts, images, comments, tags
WHERE catId = 25
AND post_catId = catId
AND image_post_id = post_id
AND comment_post_id = post_id
AND tag_cat_id = catId
AND tag_post_id = post_id
但它不显示帖子,类别中有超过 100 个帖子。
当我只在类别中搜索并发布时,它会显示所有内容。
您正在使用 INNER JOIN,当在所有 4 个表中找到相关记录时,您将获得结果。你需要使用 LEFT JOIN,类似这样:
SELECT * FROM categories
LEFT JOIN posts on post_catId = catId
LEFT JOIN images ON image_post_id = post_id
LEFT JOIN comments ON comment_post_id = post_id
LEFT JOIN tags ON tag_cat_id = catId AND tag_post_id = post_id
WHERE catId = 25;
然后您将看到与您的 catid=25 相关的所有数据。