1

私のウェブサイトのすべてのメンバーのログインの IP を記録するために、SQL Server にテーブルがあります。

    ID   MEMBER      IP       
    ---------------------------------------
    1    member1     1.1.1.1
    2    member2     2.2.2.2
    3    member3     1.1.1.1
    4    member3     3.3.3.3
    5    member4     3.3.3.3

関連付けられたメンバーとそれに関連付けられた IP を検索する方法を見つけたいと思います。

最初の例、

  • member1 は以前に 1.1.1.1 からログインしました
  • member3 は、以前は 1.1.1.1 および 3.3.3.3 からログインしていました
  • member4 は 3.3.3.3 以前からログインしました

したがって、 member1 の場合:

  • 関連メンバー: member1、member3、member4
  • 関連する IP : 1.1.1.1、3.3.3.3

member2 の場合、関連付けられたメンバーは member2 であり、関連付けられた IP は 2.2.2.2 です。

この関連付けシステムは、偽のプレイヤーの管理を支援するものであり、メンバーの数は膨大です ( ~100k )。そのため、ロード時間は大きな問題です。

私の質問:

  • 関連付けられたメンバーと関連付けられた IP のリストを生成するための SQL クエリはありますか?

=======テストする表======

CREATE TABLE [dbo].[tblAssociation](
    [ID] [int] NULL,
    [Member] [nvarchar](50) NULL,
    [IP] [nvarchar](50) NULL
) ON [PRIMARY]

GO

INSERT INTO [tblAssociation] VALUES(1,'member1','1.1.1.1')
INSERT INTO [tblAssociation] VALUES(2,'member2','2.2.2.2')
INSERT INTO [tblAssociation] VALUES(3,'member3','1.1.1.1')
INSERT INTO [tblAssociation] VALUES(4,'member3','3.3.3.3')
INSERT INTO [tblAssociation] VALUES(5,'member4','3.3.3.3')

======シャンカールの提案====

SELECT T1.Member, T1.IP, T2.Member 
FROM   tblAssociation T1 
INNER JOIN tblAssociation T2 ON T1.IP = T2.IP
AND T1.Member = 'member1'

試してみると、関連付けられたメンバー = member1、member3 しか取得できません。

member4 は存在しませんが、member4 と member3 は以前に 3.3.3.3 に接続されていたため、関連付けられているはずです。

4

2 に答える 2