我在我的网站中使用 sql server 2008 r2 和 php。
我有 2 张桌子。
1 是针对员工的。
(int) (nvarchar) (nvarchar)
id name type
1 john 2
2 peter 1
3 leah 2
4 frank 1
5 tang 3
2是为了工作
(int) (nvarchar) (nvarchar)
workid name employees
1 task1 1,3
2 task2 2,3
3 task3 1,3,4
4 task4 2
我想进行查询,为我提供工作描述,其中员工姓名的类型
意味着我想要得到这样的结果。
workid name employee
1 task1 john, leah
2 task2 peter, leah
3 task3 john,leah,frank
同样地
那么我怎样才能通过sql查询达到这个结果呢?
我无法更改表架构。
我尝试使用 case when 语句,但它不起作用。
请帮助我让这个工作..
本文的内容并不能完全回答问题,但它将建议如何正确规范化表格以简化问题。
这是一个Many-to-Many
关系。
Employees
- ID (Primary Key)
- Name
- Type
Task
- ID (Primary Key)
- Name
Work
- EmployeeID (Foreign Key)
- TaskID (Foreign Key)
员工表
id name type
1 john 2
2 peter 1
3 leah 2
4 frank 1
5 tang 3
任务表
id name
1 task1
2 task2
3 task3
4 task4
工作表
TaskID EmployeeID
1 1
1 3
2 2
2 4
3 1
3 2
3 3
4 4
Query,
SELECT t.ID, t.Name,
STUFF(
(SELECT ',' + b.Name
FROM Work a
INNER JOIN Employee b
ON a.EmployeeID = b.ID
WHERE a.TaskID = t.ID
FOR XML PATH (''))
, 1, 1, '') AS NamesList
FROM Task t
-- WHERE ..... -- add additional conditions...
GROUP BY t.ID, t.Name
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)