我经营一个管理系统,在那里注册了不同班次的人。
我希望能够显示每个工人/志愿者在同一班次工作多少次,例如:
|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 ...)
等。
我认为这是一种丑陋的方式,我希望有一种方法可以在一个查询中检索这些数据。
数据库存储如下:
位移
工作
用户
答案 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