Как получить список branch_id, который не совпадает с Max Permissions? - PullRequest
0 голосов
/ 02 ноября 2019

SAMPLE PHOTO

Приведенный выше пример структуры таблицы. Таблица состоит из 3 столбцов user_id, branch_id иmissions_id.

У меня есть заданные Макс. Разрешения каждого user_id , в котором он состоит из нескольких разрешений (allow_id) определенного user_id в branch_id (разрешение ветви пользователя)

Основная проблема здесья не знаю, как получить все ветви (branch_id), которые не имеют одинаковых разрешений с указанными Макс. разрешениями .

Я сделал запрос, но, к сожалению, могурешить эту логическую проблему.

Вот запрос, который я сделал:

    SELECT COUNT(DISTINCT branch_id) AS all_branch
    FROM branch_permission_user
    WHERE 
        USER_ID = 18 AND
        permission_id NOT IN (
            SELECT permission_id
            FROM branch_permission_user
            WHERE
                USER_ID = 18 AND
                BRANCH_ID = 39)

Вы заметите, что я написал определенный user_id (18) и branch_id (39) . Я сделал кусок SQL-запроса, чтобы найти branch_id максимальной длины каждого пользователя.

Пожалуйста, помогите мне. Спасибо всем заранее !!!

Ответы [ 2 ]

0 голосов
/ 02 ноября 2019

Я решил свою проблему, получив значение branch_id минимальной длины разрешения и применив оператор where in. Если нет. результат равен 0, то он тот же.

Вот SQL-запрос, который я сделал:

SELECT COUNT(DISTINCT branch_id) as branch_length
FROM branch_permission_user
WHERE 
    user_id = 18 AND
    permission_id NOT IN (
        SELECT permission_id
        FROM branch_permission_user
        WHERE 
            user_id = 18 AND 
            branch_id = 39 )
0 голосов
/ 02 ноября 2019

Если вы хотите найти строки, которых нет в списке доступных разрешений для пользователя, вы можете использовать:

select bpu.*
from branch_permission_user bpu
where user_id = 18 and
      permission_id not in (1, 2, 3, . . . );  -- list goes here

Вы можете сосчитать ветви, используя count(distinct):

select count(distinct branch_id)
from branch_permission_user bpu
where user_id = 18 and
      permission_id not in (1, 2, 3, . . . );  -- list goes here
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...