对于那些对MySQL或SQL专家来说可能是一个微不足道的问题感到抱歉。我有3张桌子:
安全性有几个级别,如:来宾,标准用户,管理员等。这是一个整数值。所以基本上客人是0,标准是1,管理员是10。
每个用户都有一个用于在安全表中查找的安全ID。
每个页面都有一个安全ID,用于查找给定用户可以看到的页面。
我想创建一个使用当前用户名的查询,返回该用户可以看到的页面。所以基本上返回安全级别小于或等于用户安全级别的所有页面。但是我没有将每个表中的级别只存储到安全表唯一条目的ID中。
我附上了我的数据库架构的屏幕截图:
示例数据:
用户表:
页面表:
安全表:
答案 0 :(得分:0)
SELECT p.name FROM users u JOIN security s ON u.security_id=s.id
JOIN pages p ON s.id=p.security_id where u.username='currentUser'
AND (SELECT level from security s JOIN users u on s.id=u.security_id where u.username='currentUser' GROUP BY level ) >= (SELECT level from security s JOIN pages p on s.id=p.security_id JOIN users u on s.id=u.security_id where u.username='currentUser' GROUP BY level)
答案 1 :(得分:0)
试试这个
select
p.name
from
pages p,
security s,
users u
where u.security_id = s.id
and p.security_id = s.id
and u.username = 'someuser'