下面是我與工作模式的一個例子。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