SQLite3查询所有未通过任何t3.rows连接到一个t2.row的t1.rows

nwlqm0z1  于 2023-04-06  发布在  SQLite
关注(0)|答案(1)|浏览(98)

我使用的是sqlite3,有三个表。user_permissionsusers与某些elements和权限值(0/1)连接起来。
给定一个元素id,我需要找到所有对该元素没有权限的用户(user_permissions中没有user_id+element_id的记录),或者canread =1或canedit =1但canmanage =1的用户。
我试了大约十亿查询现在,不能弄清楚..
使用SQLite3可以吗?

users:
id, name

user_permissions:
user_id, element_id, can_read, can_edit, can_manage

elements:
id, title
wvmv3b1j

wvmv3b1j1#

使用左联接:

SELECT * from users u
LEFT JOIN user_permissions up ON up.user_id = u.id AND up.element_id = @desired_element
WHERE up.user_id IS NULL 
OR ((up.can_read = 1 OR up.can_edit = 1) AND NOT up.can_manage = 1)

使用LEFT JOIN,WHERE up.user_id IS NULL将包含没有该元素任何权限的用户。

相关问题