SELECT语句

Adn*_*nan 1 sql

我有两张桌子:

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)

Cha*_*ana 9

你只需要加入

   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).查看此链接:数据库规范化了解更多信息.


Tom*_*m H 7

您应该考虑规范化数据库.当您决定在项目中需要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)