gpt4 book ai didi

sql - 如何从另一个表中获取具有匹配ID的另一个表中的名称?

转载 作者:行者123 更新时间:2023-12-02 00:11:15 26 4
gpt4 key购买 nike

我在我的网站上使用带有 php 的 sql server 2008 r2。我有 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

我想进行查询,在类型 < 3 的地方给我工作描述和员工姓名。

意思是我想得到这样的结果。

workid       name       employee
1 task1 john, leah
2 task2 peter, leah
3 task3 john,leah,frank

像聪明人一样

那么我怎样才能用 sql 查询得到这个结果呢?

我无法更改表架构。

我尝试使用 with case when 语句,但它不起作用。

请帮助我让它工作..

最佳答案

此内容并未完全回答问题,但会建议您如何正确规范化表格以简化问题。

这是一个多对多关系。

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

查询,

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

关于sql - 如何从另一个表中获取具有匹配ID的另一个表中的名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15193986/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com