【问题标题】:Getting two columns referring to one table from the same row in a table?从表中的同一行获取引用一个表的两列?
【发布时间】:2014-11-29 22:07:03
【问题描述】:

所以在这个数据库中,我有两个我感兴趣的表。一个是“Details”表,另一个是“Staff”表。

在详细信息表中,我有很多列,但我感兴趣的两列是:

  • 工人
  • 经理

这些列中的值是对 Staff 表中 StaffID 列的引用。 Staff 表由这些列组成:

  • 员工编号
  • 名字
  • 姓氏

我正在尝试制作一份报告,其中可以显示一行的详细信息以及涉及该特定详细信息(行)的工人和经理。在此报告中,我想同时显示工人的姓名和经理的姓名。问题是,我无法让它工作。它只会显示 Worker 和 Manager 指的是同一个人的结果。这是我的查询:

SELECT  Staff.LastName + ', ' + Staff.FirstName AS [Worker], 
        Staff.LastName + ', ' + Staff.FirstName AS [Manager], 
        Details.SiteName AS [Site Name], 
        Details.Description AS [Description], 
        Details.Action AS [Action],
FROM  Details 
INNER JOIN Staff 
   ON Details.Worker= Staff.StaffID AND Details.Manager = Staff.StaffID

所以我不太确定该怎么做。我很困惑。帮助将不胜感激!谢谢!

【问题讨论】:

    标签: sql sql-server reporting multiple-columns


    【解决方案1】:

    您必须加入 Staff 表两次:一次获取工人详细信息,第二次获取经理详细信息:

    SELECT W.LastName + ', ' + W.FirstName AS [Worker], 
           M.LastName + ', ' + M.FirstName AS [Manager], 
           Details.SiteName AS [Site Name], 
           Details.Description AS [Description], 
           Details.Action AS [Action],
    FROM Details 
    INNER JOIN Staff AS W ON Details.Worker = W.StaffID 
    INNER JOIN Staff AS M ON Details.Manager = M.StaffID
    

    【讨论】:

    • 谢谢!这似乎奏效了!现在我想起来了,为什么我的查询只查找工人和经理都相同的记录是有道理的,因为我是如何进行内部连接的。我什至没有想过使用两个不同的别名来为表做这件事。非常感谢!
    • @David 不客气。很高兴能帮到你。
    猜你喜欢
    • 2021-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多