下面是我与工作模式的一个例子。SQL查询JOIN,WHERE,GROUPBY,COUNT
如何返回所有拥有权限的用户的id
和name
,但是没有相应的权限认证?
例如,查询将返回0,约翰在这种情况下,由于约翰的“删除”权限,但是不具有匹配的“删除”认证。
(该模式是任意的,做作的,我只是想在语法/选择逻辑来获取此查询)
users
=====
id name
--------
0 john
1 joe
user_permissions
================
uid permission
--------------
0 'edit'
0 'delete'
1 'edit
user_certs
==========
uid cid
-------
0 'edit'
1 'edit'
我试过,这一点,我知道最后一行错误。
SELECT DISTINCT id, name FROM users
LEFT JOIN user_permissions users ON users.uid = user_permissions.uid
LEFT JOIN user_certs ON users.id = user_certs.uid
WHERE (user.permission = 'delete')
GROUP BY id, name
HAVING (COUNT(user_certs.cid = 'delete') = 0)
看起来您在WHERE子句中有一个流氓)。另外,您是否可以控制架构? –
我没有控制权。修正了多余的paren,这是我在最初提交时的拼写错误。 – Josh