[英]Privacy settings for listing file and folders in mysql
我想根據我的隱私設置列出文件夾和文件。 它在向創建者展示時沒有看到其他指定用戶,沒有任何問題。 僅列出公用文件夾。
角色:
1:定制
2:特定用戶
3:特定滾輪
4:公開/所有人開放
創建者查詢:
SELECT
f.file_id, f.is_folder, f.file_name, f.name as folder_name, f.created_at, f.privacy, f.users, f.roles, (SELECT name FROM users WHERE id = f.created_by) AS name, (SELECT surname FROM users WHERE id = f.created_by) AS surname
FROM files AS f
WHERE
CASE
WHEN f.privacy = 2 THEN ((f.users IS NOT NULL AND FIND_IN_SET(1, f.users)) OR f.created_by = 1)
WHEN f.privacy = 3 THEN ((f.roles IS NOT NULL AND FIND_IN_SET(1, f.roles)) OR f.created_by = 1)
WHEN f.privacy = 4 THEN (f.created_by = 1 OR f.created_by <> 1)
ELSE f.created_by = 1
END
AND f.folder_id = 0
ORDER BY f.name ASC LIMIT 0, 25
http://sqlfiddle.com/#!9/bae05e/5/0
受讓人查詢:
SELECT
f.file_id, f.is_folder, f.file_name, f.name as folder_name, f.created_at, f.privacy, f.users, f.roles, (SELECT name FROM users WHERE id = f.created_by) AS name, (SELECT surname FROM users WHERE id = f.created_by) AS surname
FROM files AS f
WHERE
CASE
WHEN f.privacy = 2 THEN ((f.users IS NOT NULL AND FIND_IN_SET(10, f.users)) OR f.created_by = 10)
WHEN f.privacy = 3 THEN ((f.roles IS NOT NULL AND FIND_IN_SET(2, f.roles)) OR f.created_by = 10)
WHEN f.privacy = 4 THEN (f.created_by = 10 OR f.created_by <> 10)
ELSE f.created_by = 10
END
AND f.folder_id = 0
ORDER BY f.name ASC LIMIT 0, 25
我對查詢做了一些修復
希望這可以幫助
SELECT
f.file_id, f.is_folder, f.file_name, f.name as folder_name, f.created_at, f.privacy, f.users, f.roles
, u.name, u.surname
FROM
files AS f
LEFT JOIN users u ON u.id = f.created_by
WHERE
(
(f.privacy = 2 AND LOCATE(IFNULL(f.roles,''),10))
OR
(f.privacy = 3 AND LOCATE(IFNULL(f.roles,''),2))
OR
f.privacy = 4
)
AND f.folder_id = 0
;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.