gpt4 book ai didi

php - 如何使用 MySQL Joins 选择允许用户阅读的论坛版 block ?

转载 作者:可可西里 更新时间:2023-11-01 07:20:30 26 4
gpt4 key购买 nike

在这个场景中我有三个主表:类别、版 block 和权限。类别和板表是不言自明的。权限表包含的行将确定是否允许用户读取版 block 中的线程、创建版 block 中的线程、回复版 block 中的线程或管理版 block 中的线程和帖子。在表中,用户对每个操作的能力由 0(关,或假)或 1(开,或真)表示。这些基于用户所属的成员组。

我想做的是创建一个选择类别的查询。它应该只选择具有用户可以阅读的板的类别。基本上,如果一个类别没有任何用户可以阅读的版 block ,它就不会被选中。如果该类别甚至只有一个用户可以阅读的版 block ,则会被选中。

下一个查询是在特定类别中选择用户可以阅读的版 block 。基于与上述相同的原则。显示一个用户无法阅读的看板,只是为了让他们在点击链接后才能发现,这有什么意义?

我自己从来没有真正创建过这样复杂的查询,所以我什至不知道从哪里开始。如果您能帮助我,我将不胜感激。

更新

所以,我决定试一试,这就是我想出的:

$query = "            SELECT                b.category_id, b.board_id, b.position,                p.group_id, p.board_id, p.read            FROM forum_boards AS b                INNER JOIN forum_permissions AS p ON (                        p.board_id = b.board_id,                        p.group_id = 1,                        p.read = 1                )            WHERE b.category_id = ".$category_id."            ORDER BY b.position";

请注意,这是获取用户可以阅读的特定类别中的版 block 的查询。目前正在返回以下错误,我不明白为什么。

Operand should contain 1 column(s)

Categories Table Boards Table Permissions Table

最佳答案

因为 Niko 已经提供了使用连接的示例查询,所以我提供了 subquery 版本,以便与已经提供的答案有所不同

第一个子查询是您要求的我想做的是创建一个选择类别的查询。它应该只选择具有用户可以阅读的板的类别。基本上,如果一个类别没有任何用户可以阅读的版 block ,它就不会被选中。如果该类别甚至只有一个用户可以阅读的版 block

我已经添加了条件 status=1 你的 forum_boards 是活跃的,我只是把 group_id=1 所以你必须提供正确的用户组id

SELECT * FROM forum_categories WHERE category_id IN (
SELECT category_id FROM forum_boards WHERE `status`=1 AND board_id IN (
SELECT board_id FROM forum_permissions WHERE group_id=1 AND `read`=1) )

这是你的第二个查询,你要求相同的要求,但这次是选择板,但在一个类别中,我再次添加了根据你的需要设置的条件 status=1 但我没有知道 category_id 所以我只是把它写成 category_id=1 你必须注意它以放置正确的类别 id

SELECT *  FROM forum_boards WHERE `status`=1 AND board_id IN (
SELECT board_id FROM forum_permissions WHERE group_id=1 AND `read`=1) AND category_id=1

希望有道理

关于php - 如何使用 MySQL Joins 选择允许用户阅读的论坛版 block ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17259122/

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