Как добавить это дополнительное условие (или условие) в MySQL Select? - PullRequest
0 голосов
/ 24 мая 2019

У меня есть это утверждение select, которое работает.Он гарантирует, что у пользователя есть доступ к заданию через идентификатор группы пользователя.

SELECT jobs.*, user_table.* 
FROM jobs
LEFT JOIN user_table ON jobs.userid = user_table.userid
WHERE jobs.groupid = ".$_SESSION['usergroup']."
AND jobs.id = $id
AND (approved = 1 OR approved = 2 OR approved = 4);

Я добавил столбец таблицы, и в этом новом столбце таблицы для каждого задания будут дополнительные авторизованные пользователи для задания.он будет сохранен в формате через запятую с идентификаторами пользователя (не идентификаторами группы).Итак, помимо доступа к рабочим местам в собственной компании через идентификатор группы, теперь я хочу разрешить доступ любому пользователю, находящемуся в списке через запятую, через идентификатор пользователя.Вот несколько попыток, которые я пытался, которые не работают.при этом все это не нарушает исходную функциональность для доступа к заданиям собственной компании, но не дает доступа к другим заданиям, где идентификатор пользователя находится в новом столбце extra_auth_users.

//try 1
SELECT jobs.*, user_table.*
FROM jobs
LEFT JOIN user_table ON jobs.userid = user_table.userid
WHERE (jobs.groupid = ".$_SESSION['usergroup']." OR ".$_SESSION['userid']." IN (jobs.extra_auth_users))
AND jobs.id = $id
AND (approved = 1 OR approved = 2 OR approved = 4);

//try 2
SELECT jobs.*, user_table.*
FROM jobs
LEFT JOIN user_table ON jobs.userid = user_table.userid
WHERE (jobs.groupid = ".$_SESSION['usergroup']." OR FIND_IN_SET('".$_SESSION['userid']."', jobs.extra_auth_users))
AND jobs.id = $id
AND (approved = 1 OR approved = 2 OR approved = 4);

//try 3
SELECT jobs.*, user_table.*
FROM jobs
LEFT JOIN user_table ON jobs.userid = user_table.userid
WHERE (jobs.groupid = ".$_SESSION['usergroup']." OR FIND_IN_SET('".$_SESSION['userid']."', cast(jobs.extra_auth_users as char)) > 0)
AND jobs.id = $id
AND (approved = 1 OR approved = 2 OR approved = 4);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...