chincharovpc
@chincharovpc

Как оптимизировать код sql?

Есть две сущности 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


Как мне улучшить код?
  • Вопрос задан
  • 90 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы