我有两个表(用户和会话)。 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        |

最佳答案

还没有答案;评论时间过长:

您需要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    |

08-04 17:26