gpt4 book ai didi

php - 如何在一条语句中为三个表创建sql查询?

转载 作者:行者123 更新时间:2023-11-29 01:38:43 24 4
gpt4 key购买 nike

我正在创建一个小网站。假设它有下表

Table User
user_id | user_name
1 | a
2 | b
3 | c

Table Post
post_id | user_id (fk)
1 | 1
2 | 3
3 | 2
4 | 2

Table Block
block_by_user_id | blocked_user_id (fk)
1 | 2

我想在主页上显示所有帖子。例如当前用户是 user 1 这个用户必须看到除了来自 user 2 的帖子之外的所有帖子,因为用户 1 阻止了用户 2,正如你在 Block 表格。

假设当前用户 session 为 $_SESSION['userid']
应该如何查询?性能被考虑在内。

这是我到目前为止尝试过的方法,但我认为这可能不是最佳实践。
select * from Post where user_id not in (select blocked_user_id from Block where block_by_user_id = '$_SESSION[userid]')

我是新手。非常感谢!

最佳答案

解决方法是:

SELECT *
FROM posts p

LEFT JOIN blocks b
ON p.user_id = b.blocked_user_id
AND b.block_by_user_id = 1

WHERE b.block_id IS NULL;

您需要将 block_id 添加到您的 block 表中。您加入被阻止的用户并通过 block_id IS NULL 过滤它们。如果您有任何问题,请发表评论。

关于php - 如何在一条语句中为三个表创建sql查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32175959/

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