当前位置: 首页 > 面试题库 >

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

关飞翼
2023-03-14
问题内容

我在我的网站中使用带有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查询实现此结果呢?

我无法更改表架构。

我试图与case语句一起使用,但无法正常工作。

请帮我使这个工作..


问题答案:

它的内容并不能完全回答问题,但是会建议您如何正确规范化表以简化问题。

这是一种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

询问,

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
  • SQLFiddle演示


 类似资料:
  • 问题内容: 在MySQL中: 如果我们有两个表: 和: 我想从意见表中具有相应的具有特定表(该列表)。 例如,我想选择所有从该行有一个表中的表: 我希望这些结果: 而如果我选择所有从该行表中有一个的在表: 我希望得到这样的结果: 我真的希望有人能提供帮助,谢谢大家! 我想我需要参加吗?任何指针都将是很好的,并且如果可能的话,可以做一个简短的解释,以便我可以找出我要去的地方->这样我下次就知道了!

  • 我的数据库里有两个表叫做 编号列表和编号状态 我目前正在使用下面的查询获得完美的结果 现在我要number_list的名字。两个表都有编号是通用的。我已经尝试了一些左连接等,但我正在学习MySQL,所以没有得到适当的结果。如果有人能帮我做这件事,请告诉我。谢啦

  • 问题内容: 我正在使用MySQL。我有一个名为EMP的表,现在我需要再创建一个具有相同架构,相同列和相同约束的表(EMP_TWO)。我怎样才能做到这一点? 问题答案: 要基于其他表结构/约束创建新表,请使用: 要跨多个数据复制,请使用 创建表格文档 当心关于LIKE选项的注意事项: 使用LIKE根据另一个表的定义(包括原始表中定义的任何列属性和索引)创建一个空表: CREATE TABLE new

  • 问题内容: K,所以我有两个表: 我想从类别中获取所有信息,并计算每个类别中的问题数(question_id)。 假设,第一个类别(计费)将有一个问题,第二个类别(安全)将有3个问题。 我已经试过了: 问题答案: 您想这样做: 在将确保没有问题类别获得与数= 0上市

  • 问题内容: 我正在尝试删除mysql表中的孤立条目。 我有2张桌子,像这样: 表: 表: 该和列可以被用来连接表在一起。 我想删除表中所有在表中找不到的行。 因此,使用上面的示例将删除表中的行:3&4(s)。 问题答案: 使用LEFT JOIN / IS NULL: 使用不存在: 使用NOT IN: 警告 只要有可能,就在事务中执行DELETE(假设受支持-IE:不在MyISAM上),以便在出现问

  • 问题内容: 我有2个表,一个包含我需要的最终结果,另一个包含我需要根据设定级别选择的列列表。 例如 : 所以,如果我做以下 然后,基本上我需要使用此select语句中的列名来确定从另一条语句中选择了哪些列。 香港专业教育学院尝试过的方法,我当然知道这是错的,但可以让我对我试图做的事情有所了解。 我试图以一种动态方式构建一个sql查询,该查询可以通过我放在表中的任何列进行更改。 从理论上讲,这应与以