如何在mysql select中添加此额外规定(或条件)?

时间:2019-05-24 17:25:23

标签: mysql join select

我有这个选择语句,可以正常工作。这样可以确保用户可以通过用户的组ID访问作业。

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);

我添加了一个表格列,在每个新作业的此新表格列中,将有该作业的额外授权用户。它将以逗号分隔的格式保存,并带有用户ID(而不是组ID)。因此,除了可以通过组ID访问用户自己的公司职位之外,现在我想允许通过用户ID访问以逗号分隔的列表中的任何用户。这是我尝试过的一些尝试,不起作用。有了所有这些,它并没有破坏原始功能以访问自己公司的工作,但是并没有提供访问用户ID在新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);

0 个答案:

没有答案