我有两个表(用户和会话)。 users表包含用户(user1和user2以及其ID)的组合。从会话表中,我想按sessionID进行分组,并计算用户表中的对在会话表中按对象分组的情况下出现的次数。
例如,让我们在用户表中获取第一对(xxx,yyy)。现在,该对在sessionID 1000和2000中都存在。因此,我希望用户表中的#sessions对该对具有2作为值。同样,对于所有对。
我的一个粗略想法是对sessionID进行分组,并查看该对象分组的用户表中是否存在来自用户表的对,如果是,则将该组计为1,然后对包含该对的所有组求和。在该对发生的2次中,user1单击了几次(user1clicks),user2单击了几次(user2clicks)。
我无法将其转换为查询。真的很难解决这个问题。非常感谢您的帮助!
用户表:
| user1 | id1 | user2 | id2 |
-----------------------------
| xxx | 1 | yyy | 2 |
| xxx | 1 | zzz | 3 |
| yyy | 2 | zzz | 3 |
会话表:
| user | id | sessionID | clicked |
--------------------------------------
| xxx | 1 | 1000 | yes |
| yyy | 2 | 1000 | no |
| xxx | 1 | 2000 | no |
| yyy | 2 | 2000 | no |
| xxx | 1 | 3000 | no |
| zzz | 1 | 3000 | yes |
输出:
| user1 | id1 | user2 | id2 | #sessions | user1clicks | user2clicks|
--------------------------------------------------------------------
| xxx | 1 | yyy | 2 | 2 | 1 | 0 |
| xxx | 1 | zzz | 3 | 1 | 1 | 0 |
| yyy | 2 | zzz | 3 | 0 | 0 | 0 |
答案 0 :(得分:1)
还没有(答案);评论太久了:
您需要3张桌子;
users
user_id | user
-----------------------------
1 | xxx
2 | yyy
3 | zzz
combinations
user_id1 | user_id2
-----------------------------
1 | 2
1 | 3
2 | 3
sessions
session_id | user_id | sessionID | clicked |
--------------------------------------
101 | 1 | 1000 | yes |
102 | 2 | 1000 | no |
103 | 1 | 2000 | no |
104 | 2 | 2000 | no |
105 | 1 | 3000 | no |
105 | 1 | 3000 | yes |