2016-12-17 3 views
1

私はスタックオーバーフローデータベース(https://data.stackexchange.com/stackoverflow/query/new)を作成していますが、どのユーザーのペアが組織的に同じ投稿にコメントしているか知りたいですか?スタックオーバーフローデータベース - 複数のユーザーが体系的に同じ投稿をコメントします

を(1 2のユーザーがコメントを書かれている投稿はありません)私はこのクエリを作成している(私は最初の10を取った)が、それが良い結果返さない:

SELECT DISTINCT TOP 10 c1.userId, u1.displayName, c2.userId, u2.displayName 
FROM comments AS c1 
JOIN users AS u1 ON (c1.userId = u1.id) 
,comments AS c2 
JOIN users AS u2 ON (c2.userId = u2.id) 
WHERE c1.postId = c2.postId 
AND c1.userId != c2.userId 
AND c1.postId = ALL(SELECT postId FROM comments AS c3 WHERE c3.userId=c2.userId) 
GROUP BY c1.userId, u1.displayName, c2.userId, u2.displayName 

の検索結果をこのクエリの:

result of query

私は私のクエリで間違っているのか分かりません。

答えて

2

あなたの参加条件は少し畳み込まれています。 2つのコメントが同じポイントにあることを確認したいので、そのコメントをON句に含めてください。次に、あなたも\ order by不足している:

SELECT TOP 10 c1.userId, u1.displayName, c2.userId, u2.displayName, COUNT(*) 
FROM comments AS c1 JOIN 
    users AS u1 
    ON c1.userId = u1.id join 
    comments AS c2 
    ON c1.postId = c2.postId JOIN 
    users AS u2 
    ON c2.userId = u2.id AND 
     c2.userId < c1.userId 
GROUP BY c1.userId, u1.displayName, c2.userId, u2.displayName 
ORDER BY COUNT(*) DESC; 

<が重複ペアを避けるためです。

+0

このクエリは、対称ペアを生成します。 'c2.userid c1.userid' –

+0

@vkpを使用してください。 。 。良い提案。私はその変更を行いました。 –

関連する問題