3个表之间的SQL关系

时间:2014-05-25 09:18:19

标签: sql

我需要一些SQL语句帮助......

我有树表

  • 问题
  • 解决方案
  • 员工

Problem表包含IDdescription问题以及报告此问题的人员的ID

Solution表包含解决方案的IDdescription和解决问题的人的ID

Employee表包含ID,即公司所有员工的名字和姓氏。

求解程序和记者的ID与员工的ID相关

我想编写一个查询,告诉我问题和解决方案的描述以及报告和解决问题的员工的名字和姓氏。

这是我必须选择我需要的所有内容的查询,除了求解器的名称..

SELECT        
   P.ProblemID, 
   P.Description AS ProblemDescription, 
   P.SolutionID,  
   P.ReporterID, 
   E.FirstName,
   E.LastName, 
   S.SolverID, 
   S.Description AS SolutionDescription
FROM            
   (tblProblem P 
LEFT OUTER JOIN 
   tblEmployee E ON P.ReporterID = E.EmployeeID) 
LEFT OUTER JOIN 
   tblSolution S ON P.SolutionID = S.SolutionID;

我真的希望有人可以帮我解决这个问题。

提前致谢!

2 个答案:

答案 0 :(得分:1)

再次加入员工表,一次为求解者,一次为记者:

SELECT        P.ProblemID, 
              P.Description AS ProblemDescription, 
              P.SolutionID,

              P.ReporterID, 
              RE.FirstName as ReporterFirstname,
              RE.LastName as ReporterLastname, 
              S.SolverID, 
              S.Description AS SolutionDescription,
              SE.FirstName as SolverFirstname,
              SE.LastName as SolverLastname
FROM

             ((tblProblem P LEFT OUTER JOIN 
              tblEmployee RE ON P.ReporterID = RE.EmployeeID) LEFT OUTER JOIN 
              tblSolution S ON P.SolutionID = S.SolutionID) LEFT OUTER JOIN 
              tblEmployee SE ON P.ReporterID = SE.EmployeeID

PS:我看到你使用括号。你在使用Access吗?如果是这样,我希望我做对了。

答案 1 :(得分:0)

您还需要加入标记为解算器的员工。按照您的风格而不知道确切的列名:

SELECT        
          P.ProblemID, 
          P.Description AS ProblemDescription, 
          P.SolutionID,

          P.ReporterID, 
          E.FirstName,
          E.LastName, 
          S.SolverID, 
          S.Description AS SolutionDescription,
          E2.FirstName as SolverFirstName,
          E2.LastName as SolverLastName

         (tblProblem P LEFT OUTER JOIN 
          tblEmployee E ON P.ReporterID = E.EmployeeID) 
          LEFT OUTER JOIN 
          tblSolution S ON P.SolutionID = S.SolutionID
          LEFT OUTER JOIN
          tblEmployee E2 ON S.SolverID = E2.EmployeeID;