3

私は次の表を持っています

UserID  | User knows
--------------------
a       |          b
a       |          c
c       |          e
c       |          a
d       |          f
d       |          g

どのユーザーが接続されているかを知るためにリストを取得したい (また、相互に)。

たとえば、ユーザー (a) の場合、リストには b、c、e、a が含まれている必要があります。

SQLでそれを行う方法はありますか、それとも何かコーディングする必要がありますか?

4

1 に答える 1

3

SQL Server 2005 以降を使用している場合は、次のようにしてみてください。

WITH userCTE
AS ( 

    SELECT UserKnows
    FROM users
    WHERE UserId = 'a'
    UNION ALL
    SELECT UserKnows
    FROM users
    INNER JOIN userCTE 
     ON users.UserId= userCTE.UserKnows
    WHERE users.UserId != 'a'
)
SELECT *
FROM userCTE

ここで実際の動作を確認できます: http://sqlfiddle.com/#!3/d41d8/1832/0

于 2012-06-13T06:29:16.937 に答える