【问题标题】:fetching names from one table with multiple ids in join从一个具有多个 id 连接的表中获取名称
【发布时间】:2014-04-03 05:29:43
【问题描述】:

员工

ID    Name   
1     John
2     Williams

约会

ID  DoctorName   Employee_id  Team lead
1    willson          1            2

SQL

SELECT E.*,A.* FROM Employee as E,Appointment as A WHERE A.Employee_id = E.ID

如果我想要获取团队负责人姓名,这是我的加入,我们该怎么做?

【问题讨论】:

  • 您的预期答案是什么?

标签: mysql sql join subquery inner-join


【解决方案1】:

试试这个

SELECT E.name
FROM Employee E
JOIN Appointment A 
ON A.Employee_id = E.ID
WHERE [some condition here]

【讨论】:

    【解决方案2】:

    如果团队负责人姓名出现在预约表中,则使用以下查询:

    SELECT E.Name AS 'Employee Name',A.DoctorName AS 'Doctor', A.TeamLeadName AS 'Team Lead' FROM Employee AS E,Appointment AS A WHERE A.Employee_id = E.ID;
    

    如果团队负责人姓名在不同的表中,例如 TeamLead,则使用下面的查询:

    SELECT E.Name AS 'Employee Name',A.DoctorName AS 'Doctor', T.TeamLeadName AS 'Team Lead' FROM Employee AS E,Appointment AS A, TeamLead AS T WHERE A.Employee_id = E.ID AND A.TeamLead=T.TeamLead_ID;
    

    如果威廉姆斯是团队负责人(您的问题中未提及),则使用以下查询:

    SELECT E.Name AS 'Employee Name',A.DoctorName AS 'Doctor', T.Name AS 'Team Lead' FROM Employee AS E,Appointment AS A, Employee AS T WHERE A.Employee_id = E.ID AND A.TeamLead=T.ID;
    

    【讨论】:

      【解决方案3】:

      试试这个:

      SELECT A.ID,A.DoctorName,E.Name,E1.Name 
      FROM Employee E
      INNER JOIN Appointment A
      ON A.Employee_id = A.ID
      WHERE E1.ID=A.Teamlead
      

      【讨论】:

        【解决方案4】:

        您还没有使用联接。您需要在这里使用加入。您的 TeamLead 必须与员工 ID 相同。基于此,您必须选择员工姓名,并将其别名为 TeamLeadName。

        SELECT A.ID, A.DoctorName, A.Employee_id, E.Name as TeamLeadName
        FROM Appointment A
        JOIN Employee E
        ON A.TeamLead = E.ID
        

        【讨论】:

          【解决方案5】:

          试试这个:

          SELECT A.ID,A.DoctorName,E.Name as Employee,E1.Name as TeamLead
          FROM Appointment A INNER JOIN
          Employee E ON E.ID=A.Employee_id INNER JOIN
          Employee E1 ON E1.ID=A.TeamLead
          

          结果将是:

          ID  DoctorName  Employee_id   TeamLead
          ---------------------------------------
          1   willson     John          Williams
          

          SQL Fiddle 中查看结果。

          编辑:

          要包含更多的表,你需要加入不同别名的Employee表:

          SELECT A.ID,A.DoctorName,E.Name as Employee,E1.Name as TeamLead,E2.Name as AttendedBy, Att.Attended
          FROM Appointment A INNER JOIN
          tblAttended Att ON Att.Id=A.Id INNER JOIN
          Employee E ON E.ID=A.Employee_id INNER JOIN
          Employee E1 ON E1.ID=A.TeamLead INNER JOIN
          Employee E2 ON E2.ID=Att.employee_id
          

          样本结果:

          ID  DoctorName  Employee_id   TeamLead    AttendedBy     Attended
          -----------------------------------------------------------------
          1   willson     John          Williams    John           Y
          

          【讨论】:

          • 非常感谢。这对我来说很好,但我想涉及更多有 Employee_id = 登录员工 id 的表
          • 还有哪些表?
          • tblAttended ID employee_id 参加了 1 1 Y
          • @user3042019:您应该以另一个别名加入 Employee 表来执行此操作。我将编辑我的答案。
          • 我需要显示所有约会 如果某些约会没有参加,则有一个问题。
          猜你喜欢
          • 2016-10-02
          • 2015-02-06
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多