2012-05-05 26 views
1

私はこの問題についていくつかの課題を抱えていましたが、それ自体がテーブルに加わることになると確信しています。複数のユーザ名に同じIPアドレスを使用しているユーザを見つけるMySQLクエリ

私は "posts"テーブルを持つフォーラムを持っています。フォーラムに投稿されたすべての投稿のipaddress、username、userid、およびpostidを保存します。

私はこの週に複数のユーザーIDで使用されていたipaddressesのリストを出力するために毎週実行するクエリを取得しようとしています。複数のuseridによって同じipaddressが使用されたpostidid 。私はここで他の人の同様の質問からこれまでのところ、これを持って

SELECT t1.userid,t2.userid, t1.username, t2.username, t1.ipaddress, t2.ipaddress, t1.postid, t2.postid 
FROM qvb_post t1 
INNER JOIN qvb_post t2 ON t1.ipaddress=t2.ipaddress AND t1.userid!=t2.userid 
WHERE 
t1.dateline > 1335897698 AND t2.dateline > 1335897698 

しかし、それはIMO不要な行の多くを返し、それはそれぞれの両方がユーザーID 1を使用した場合の両方をways-複製返しFR例userid2のipaddressと同様に、userid2がuserid1のアドレスを使用しているかのようになります。

データラインは数日前からのものです。

理想的には、重複したユーザー名と各投稿ごとにIPアドレスのリストを表示したいので、PHPに入り、IPアドレスを出力するレポートを作成することができます。ユーザー名)とそれによって作成されたポストID。

私は、2人が同じIPアドレスを持つ多くの正当な理由があることを認識しています。このレポートに表示された人に対して厳しい措置がとられることはありません。

ご協力いただきありがとうございます。

ちょうど私がPHPでうまくいくように、私は助けが必要なクエリです。

+0

投稿を編集してサンプル出力を含めることはできますか?しかし、私はおそらくそれがあなたのSELECT'ingどのくらいのものに関連すると思いますか? 2つのテーブルから合計8列を選択しています。あなたが本当に欲しいのはそれですか? – tcole

+1

私は、私が望む出力が実現可能であることに気づいていません。ご協力いただきありがとうございます。 :) –

答えて

6

これはあなたのスタートを与える必要があります。

SELECT ipaddress, GROUP_CONCAT(DISTINCT username) 
FROM qvb_post 
GROUP BY ipaddress 
HAVING COUNT(DISTINCT username) > 1 
ORDER BY COUNT(DISTINCT username) DESC 

それはあなたが複数の個別のユーザー名が使用するIPアドレスを示しており、また、あなたのIPアドレスごとに、それらのユーザー名のカンマ区切りのリストを提供します。必要に応じて投稿IDを含めるように拡張することもできます。

+0

マーク、それは完璧でした!ありがとうございました。私はテーブルを結合して間違った木を鳴らしていたと思う。私が次のコメントで使用したのは、興味のある人のためです。 –

+0

SELECT IPアドレス、GROUP_CONCAT(DISTINCTユーザ名)、GROUP_CONCAT(DISTINCTユーザーID)、GROUP_CONCAT(DISTINCT postid) qvb_post FROM WHERE日付変更線> 1335897698 ANDユーザーID> 0 GROUP BY IPアドレス HAVING COUNT(DISTINCTユーザーID)> COUNT BY 1 ORDER (DISTINCTユーザーID)DESC –

関連する問題