跟踪对象上的用户之间的交互

时间:2014-03-03 23:32:32

标签: mysql sql

我有一个数据集,许多用户都注释了一组工件,我想知道用户直接/间接与之交互的每个其他用户。我想开发一个查询,显示每个用户和每个其他用户对他们也贡献的工件做出贡献。我的数据看起来像这样

+----------+------+
| Artifact | User |
+----------+------+
|    1     |   a  |
|    1     |   b  |
|    1     |   c  |
|    1     |   d  |
|    2     |   a  |
|    2     |   m  |
+----------+------+

因此,在这种情况下,用户a与b,c,d&进行了交互。米; b与a,c& d;并且m与

进行了互动

理想情况下,它不会显示重叠(因此只显示不同的值),但如果有必要,我可以清除它们

1 个答案:

答案 0 :(得分:2)

您可以使用GROUP_CONCAT功能:

SELECT 
    t1.User, GROUP_CONCAT(DISTINCT t2.User ORDER BY t2.User) 
FROM 
    test t1
    JOIN test t2 ON (t1.Artifact = t2.Artifact AND t1.User != t2.User)
GROUP BY t1.User

Here's an example