簡體   English   中英

SQL/PHP 中是否有一種快速的方法可以讓所有用戶擁有所有分支權限?

[英]Is there a fast way in SQL/PHP to get all users with all branches permission?

我有一個 branch_user_permission 的數據庫表,它有 3 個表列[branch_id, permission_id, user_id]

這是數據庫的示例數據

分支權限用戶示例數據

我只想 map 或獲取所有權限(permission_id)與其他分支(branch_id)相同的所有用戶

例子:

[branch_id][permission_id][user_id]


[1][2][1]

[1][3][1]

[1][5][1]

[1][6][1]

[2][2][2]

[2][3][2]

[2][5][2]

[2][6][2]

[3][2][3]

[3][3][3]

[3][6][3]

[4][2][5]

[4][3][5]

[4][5][5]

[4][6][5]

因此,我將獲得預期的 output 以獲取所有其他分支的所有權限都相同的所有 user_ids:

  • 數組 (1,2,5)

這適用於已知的權限集。 您需要匹配所有這些,以便最后一個值4是集合中的權限 id 數(2,3,5,6)

SELECT user_id FROM branch_user_permission
WHERE permission_id IN (2,3,5,6)
GROUP BY user_id
HAVING COUNT(branch_id) = 4

我不知道您如何確定要查找的權限集,但如果它來自初始(已知) branch_iduser_id ,您可能需要另一個查詢來構建它(並計數)。 在單個查詢中執行此操作將需要計數和 id 列表,這可能需要兩個子查詢 - 現在沒有時間檢查。

SqlFiddle 演示

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM