私のウェブサイトのすべてのメンバーのログインの 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 に接続されていたため、関連付けられているはずです。