Есть две сущности users(id,name,department_id) и departments(id,name,is_private)
Мне нужно выбрать список пользователей для пользователя с id=8
1. Если у пользователя с id=8 департамент приватный(is_private=true), то выбрать пользователей только с этим департаментом
2. Если у пользователя с id=8 нет департамента или департамент открытый(is_private=false), то выбрать пользователей, у которых нет департамента или департамент открытый
Код показан ниже
SELECT users.*
FROM users
LEFT JOIN "departments" "Department" ON "users"."department_id" = "Department"."id"
WHERE CASE
WHEN (SELECT COUNT(users.*)
FROM users
LEFT JOIN departments on users.department_id = departments.id
WHERE users.id = 8 AND (users.department_id IS NULL OR departments.is_private = false)) > 0
THEN users.department_id IS NULL OR "Department".id IN (SELECT departments.id FROM departments WHERE departments.is_private = false)
ELSE "Department".id = (SELECT users.department_id FROM users WHERE users.id = 8)
END
Как мне улучшить код?