【问题标题】:How to select records with two columns matching values in one table?如何在一个表中选择具有两列匹配值的记录?
【发布时间】:2019-04-26 15:31:38
【问题描述】:

我正在在线创建一个请求表,员工在系统中生成请求,但他/她的老板只能查看在他手下工作的员工的请求。

例如:在一个组织中,有不同的员工在一位老板手下工作。

---------------------
|EmpNo   |BossNo    |
---------------------
|011     |001       |
|012     |001       |
|013     |001       |
|014     |002       |
---------------------

在上表场景中,如果员工 (012) 将生成任何请求,那么只有老板 (001) 能够查看该请求,其他任何人都无法查看,就像员工 (014) 将生成任何请求然后只有老板 (002)能够查看该请求并接受它。

我想为此创建 SQL 查询。但我无法为此创建查询。 下面是查询

select e1.empno, e1.bossno
  from employeedetails as e1
  inner join employeedetails as e2
    on e1.empno= e2.empno
   and e1.bossno= e2.bossno
  group by e1.empno, e1.bossno
  order by e1.empno, e1.bossno

【问题讨论】:

  • 你使用任何 ORM 吗?
  • 请发布Request表的架构。
  • 您希望 SQL 查询实现您的目标吗?
  • 问题是什么
  • @er-sho 是的,因为我不知道如何实现这一目标..!

标签: c# sql-server


【解决方案1】:

类似这样的:

SELECT request.Info, request.empno, empDetails.EmployeeName
FROM requestTable as Request
    INNER JOIN employeedetails AS empDetails ON Request.empno = empDetails.empno
WHERE empDetails.bossno = @IdOfLoggedInEmployee

【讨论】:

    【解决方案2】:

    因为,两个表都检索到相同的值,然后使用 join as e1.empno= e2.empno and e1.bossno= e2.bossno

    我想是的:

    select e1AsBoss.empno as idBoss , e2AsEmployer.empno as idEmployer
      from employeedetails as e1AsBoss
      inner join employeedetails as e2AsEmployer
        on e1AsBoss.empno= e2AsEmployer.bossno
      group by e1AsBoss.empno, e2AsEmployer.empno
      order by e1AsBoss.empno, e2AsEmployer.empno
    

    【讨论】:

      猜你喜欢
      • 2019-08-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-06
      • 2017-05-09
      相关资源
      最近更新 更多