查询员工工作次数相同的次数

时间:2014-09-09 19:17:37

标签: php mysql

我经营一个管理系统,在那里注册了不同班次的人。

我希望能够显示每个工人/志愿者在同一班次工作多少次,例如:

    |Amy|Carl|Max|
    |---|----|---|
Amy | X | 2  | 6 |
Carl| 2 | X  | 5 |
Max | 6 | 5  | X |

我希望你有一些想法如何形成查询。 到目前为止,我想出的唯一想法是让PHP为每个用户创建一个自定义查询。

Select count(common between user 1 and 2), count(common between user 1 and ...)
Select count(common between user 2 and 1), count(common between user 2 and ...)

等。

我认为这是一种丑陋的方式,我希望有一种方法可以在一个查询中检索这些数据。

数据库存储如下:

位移

  • ID

工作

  • ID
  • ShiftID
  • 用户ID

用户

  • ID
  • 名称

2 个答案:

答案 0 :(得分:0)

你能不能将每一行与另一行进行比较的交叉连接,并处理userid = userid的情况而不是放一个X?

答案 1 :(得分:0)

您必须自行加入工作表:

SELECT a.UserID, b.UserID, count(a.ShiftID) AS common_shifts
FROM Working AS a
INNER JOIN Working AS b ON ((a.ShiftID = b.ShiftID) AND (a.UserID <> b.UserID))
HAVING common_shifts > 0