2

SQL の問題:

テーブルの変更を受け付けています。FriendshipRequest tbl を追加する必要があるか、必要な情報を収集するのに IsActive で十分かどうか。または、ステータスを使用する必要がある場合: 保留中、承認済み、拒否など。

テーブル User とテーブル Friendship を取得しました。

友達がいるユーザー、または友達の招待が保留中のユーザーごとに、自分から、または自分から、2 行が挿入されます。

| UID   | FID   | IsActive |
|  1    |  2    |    1     |
|  2    |  1    |    1     | 

^ ここでは、UID から FID へのフレンド招待状を 1 通受け取りました。招待は受け入れられ、彼らは友達です。

| UID   | FID   | IsActive |
|  1    |  2    |    1     | 
|  2    |  1    |    0     | 

^ ここでは、UID 1 > 2 からフレンドシップの保留中の招待状を 1 つ受け取りました。他のユーザー (UID:2) は招待を処理していません。承認/拒否別名 1/0

| UID   | FID   | IsActive |
|  1    |  2    |    0     | 
|  2    |  1    |    0     | 

^ ここで、却下されたリクエストを受け取りました。ID 2 のユーザーは招待を辞退しました。両方の列を False / 0 に設定します。

問題は、次のクエリを書きたいということです。保留中のすべてのリクエストを取得します。(IsActive 1 および IsActive = 0) 特定のユーザーのすべてのフレンドを取得します (アクティブなフレンド IsActive = 1)

私が使用するテーブルは次のとおりです。 ユーザー列: UserID フレンドシップ列: UserID、FriendID、IsActive

UNION ALL を試してみましたが、結果の処理方法がわかりません。

SELECT 
    u.UserID, u.Username, f.IsActive
FROM Friendship f, [User] u
  WHERE f.UserID = 6 AND f.FriendID = u.UserID AND f.IsActive = 1 

UNION ALL

SELECT 
    u.UserID, u.UserName, f.IsActive
FROM Friendship f, [User] u
  WHERE f.FriendID = 6 AND f.UserID = u.UserID AND f.IsActive = 1 
4

1 に答える 1