【发布时间】:2021-12-11 09:44:10
【问题描述】:
我正在尝试选择此用户有权访问的所有页面,无论是直接访问还是组访问。
我试过了,但它没有按预期返回结果。
SELECT DISTINCT
pages.id AS page_id,
pages.name AS page_name,
pages.description AS page_description,
pages.type AS page_type,
group_page.group_id AS page_group_id,
user_page.user_id AS page_user_id
FROM
pages
JOIN
user_page ON pages.id = user_page.page_id
JOIN
group_page ON pages.id = group_page.page_id
JOIN
user_group ON group_page.group_id = user_group_.group_id
WHERE
user_page.user_id = 23
我在下面的架构中提供了示例数据:
页表:
page_id | page_name | page_description
---------+-----------+------------------
4 | name3 | descr
6 | name2 | description
5 | name8 | description
user_page 表:
user_id | page_id
------------+----------
23 | 4
12 | 6
12 | 6
group_user 表:
user_id | group_id
-----------+-----------
4 | 14
4 | 16
23 | 16
group_page 表:
page_id | group_id
-----------+-----------
4 | 14
6 | 16
在这里查看https://www.db-fiddle.com/f/6MnsujPF8foREq2Cwt8EDn/2
我正在尝试为用户 7 检索第 4 页
【问题讨论】:
-
请在代码问题中给出minimal reproducible example--剪切&粘贴&运行代码;具有期望和实际输出的示例输入(包括逐字错误消息);标签和版本;明确的规范和解释。对于包含最少代码的错误,您可以给出的代码是您显示的代码可以通过您显示的代码扩展为不正常。 (调试基础。)对于 SQL 包括 DDL 和表格初始化代码。当你得到一个你不期望的结果时,暂停你的总体目标,切到第一个具有意外结果的子表达式并说出你的期望和原因,并通过文档证明是合理的。 How to AskHelp center