gpt4 book ai didi

php - 基于值的多表连接查询

转载 作者:行者123 更新时间:2023-11-30 23:35:18 25 4
gpt4 key购买 nike

假设我有一个表 posts 如下所示:

|    id    |     type     |     ref_id     |
-----------+--------------+ ---------------
| 1 | 1 | 1 |
| 2 | 1 | 2 |
| 3 | 3 | 3 |
| 4 | 1 | 4 |
| 5 | 2 | 5 |
| 6 | 3 | 6 |

type字段是用来和其他表join的,比如1=blogs, 2=reviews, 3=photos,每一个都有各自的字段,而ref_id就是blog/review/photo的ID。

我想做的是显示所有最新的帖子(按 id DESC 排序),同时根据类型的值与所有其他表连接,但如果可能的话我想用一个查询来完成。我不好的查询如下:

SELECT * FROM posts
LEFT JOIN blogs ON posts.ref_id = blogs.ID AND posts.type = 1
LEFT JOIN reviews ON posts.ref_id = reviews.ID AND posts.type = 2
LEFT JOIN photos ON posts.ref_id = photos.ID AND posts.type = 3
ORDER BY posts.id DESC

查询没有任何结果。另一种选择是循环 SELECT * FROM posts 查询并根据类型执行另一个查询,但如果可能的话,我想一次性完成。

感谢您的帮助。

最佳答案

要了解为什么您的查询没有返回任何内容,请考虑将“AND posts.type =”从 JOIN 子句移动到 WHERE 子句。它将是:

select * from posts ... where type=1 and type=2 and type=3

显然,它不会返回任何结果。我知道这不是您问题的答案,但我会考虑对您的表定义进行一些小改动:

(表名:字段)

posts: id
blogs: id, post_id
reviews: id, post_id
photos: id, post_id

在这种情况下,您将能够构建更简单和更传统的查询:

select * from posts
left join blogs on blogs.post_id = posts.id
left join reviews on reviews.post_id = posts.id
left join photos on photos.post_id = posts.id

关于php - 基于值的多表连接查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7967898/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com