Php 我在查询I';m在一个用逗号分隔的表中存储多个雇员id
我对查询中的SQLPhp 我在查询I';m在一个用逗号分隔的表中存储多个雇员id,php,mysql,sql,phpmyadmin,Php,Mysql,Sql,Phpmyadmin,我对查询中的SQL有一个问题:我在一个表中存储了多个员工ID,每个任务都用逗号分隔。当我尝试在查询中使用获取任务时,我没有获取包含员工ID的行 我的问题是: select t.*, e.emp_name, d.department_name from task as t LEFT JOIN employee as e on(e.emp_id=t.assign_to) LEFT JOIN department as d on(d.depart_id
有一个问题:我在一个表中存储了多个员工ID,每个任务都用逗号分隔。当我尝试在
查询中使用获取任务
时,我没有获取包含员工ID的行
我的问题是:
select
t.*,
e.emp_name,
d.department_name
from
task as t
LEFT JOIN employee as e on(e.emp_id=t.assign_to)
LEFT JOIN department as d on(d.depart_id=e.depart_id)
where
t.task_status='PENDING'
AND t.created_by!='31'
AND t.assign_to IN ('31')
order by
t.task_id DESC
中的数据库中存储的值不是这样工作的
例如,如果您的数据如下所示:
ManagerName, ManagerOf
'John', 'Steve,Sarah,Dave'
你不能这样做:
SELECT * FROM managers WHERE 'sarah' IN ManagerOf
在中,最好将其视为或的延伸:
SELECT * FROM managers WHERE managerof IN ('Sarah','Steve')
--is the same as:
SELECT * FROM managers WHERE
managerof = 'Sarah' OR
managerof = 'Steve'
列表中的项目数量与或条款数量相同
希望这能告诉您为什么数据库不返回任何结果。。因为Steve,Sarah,Dave
的值不等于Sarah
或Steve
。数据库不会查看逗号并说“哦,这是一个列表”——它只是一个字符串,偶尔会有一个逗号字符
使用LIKE和string-concat可以快速实现您想要的目标,但老实说,它们不值得回答
您需要更改数据库结构,以包含一个新表,该表跟踪任务id及其分配给的员工id。完成此操作后,您将能够在employee id列上使用IN,正如您希望在该查询中使用的那样