我有两张桌子:
EMP
emp_id | Name | Surname |
1 | Bob | Park |
2 | Annie| South |
3 | Eric | P. |
Run Code Online (Sandbox Code Playgroud)
项目
proj_id | Tester_1 | Tester_2 | Tester_3 |
1 | 2 | 3 | 1 |
Run Code Online (Sandbox Code Playgroud)
现在我正在尝试制作一个视图,以便我有以下内容
proj_id | Tester_1_Name | Tester_2_Name | Tester_3_Name
1 | Annie | Eric | Bob
Run Code Online (Sandbox Code Playgroud)
你只需要加入
Select proj_id,
t1.name + ' ' + t1.surname tester1,
t2.name + ' ' + t2.surname tester2,
t3.name + ' ' + t3.surname tester3
From Project p
Left Join Emp t1 On t1.emp_id = p.Tester_1
Left Join Emp t2 On t2.emp_id = p.Tester_2
Left Join Emp t2 On t3.emp_id = p.Tester_3
Run Code Online (Sandbox Code Playgroud)
作为一个观点......
Create View ProjectWithTesters
As
Select proj_id,
t1.name + ' ' + t1.surname tester1,
t2.name + ' ' + t2.surname tester2,
t3.name + ' ' + t3.surname tester3
From Project p
Left Join Emp t1 On t1.emp_id = p.Tester_1
Left Join Emp t2 On t2.emp_id = p.Tester_2
Left Join Emp t2 On t3.emp_id = p.Tester_3
Run Code Online (Sandbox Code Playgroud)
注意:正如其他人提到的,您的数据库设计违反了第一范式"应该没有重复组",这意味着表不应包含多个列,这些列表示某些属性的多个实例(如tester_1,tester_2,tester_3).查看此链接:数据库规范化了解更多信息.
您应该考虑规范化数据库.当您决定在项目中需要4名测试人员时会发生什么?
那说,这应该给你你想要的.
SELECT
P.proj_id,
E1.name AS tester_1_name,
E2.name AS tester_2_name,
E3.name AS tester_3_name
FROM
Project P
LEFT OUTER JOIN Emp E1 ON
E1.emp_id = P.tester_1
LEFT OUTER JOIN Emp E2 ON
E2.emp_id = P.tester_2
LEFT OUTER JOIN Emp E3 ON
E3.emp_id = P.tester_3
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
214 次 |
| 最近记录: |