2016-04-04 3 views
0

私はソーシャルネットワークのようなサイトを作っています。私は3つのテーブルを持っています。私は、各ユーザーと、ブロックされている合計の友人数と友人数を検索しています。入れ子になったクエリを書き込む方法3つのテーブルを接続していますか?

1. tbl_Registrations 

    | Id | FirstName | 
    ************************* 
     1  User1 
     2  User2 
     3  User3 
     4  User4 
     5  User5 
     6  User6 
     7  User7 
     8  User8 


    2.tbl_Friends 

    | Id | SenderId | ReciverId | Status | 

     1   1    2   Accept 
     2   3    1   Accept 
     3   4    1   Accept 
     4   2    3   Accept 
     5   3    8   Accept 
     6   4    2   Accept 
     7   4    3   Accept 
     8   8    4   Accept 

    3. tbl_Status 

    | Id | UserId | Status | 

     1   1   Blocked 
     2   3   Blocked 
     3   4   Allowed 
     4   2   Blocked 
     5   6   Blocked 
     6   5   Allowed 
     7   8   Blocked 
     8   7   Allowed 

私のクエリは、私が唯一の名前と合計友人を取得します私のクエリを使用して

SELECT tbl_Registrations.FirstName, COUNT(*) AS TotalFriends 
FROM tbl_Friends INNER JOIN tbl_Registrations ON tbl_Friends.SenderId = tbl_Registrations.Id 
OR tbl_Friends.ReciverId = tbl_Registrations.Id 
WHERE (tbl_Friends.Status = 'Accept') 
GROUP BY tbl_Registrations.FirstName 

です。ブロックされたFriendsの検索数を同じクエリに含める方法

私の予想出力は

| FirstName | TotalFriendsCount | BlockedFriendsCount | 
+0

あなたtbl_Statusが私のために意味をなさないしてみているのですか?彼は誰によってブロックされていますか? – Veljko89

+0

Adminによってブロックされます。私は管理部分をやっています。管理側で私はユーザーリストをリストアップしていて、その友人カウントとブロックされた友人カウント@ Veljko89 – Ritz

+0

だから、あなたはtbl_Friends.Statusが 'ブロックされる'と言いたいのですか?どの列がBlockedFriendsを表示しているのか分かりません – Veljko89

答えて

0

がどのようにユーザーID 1がブロックされている知っている、これは

SELECT tbl_Registrations.FirstName, 
     COUNT(*) AS TotalFriends, 
     ( SELECT COUNT(*) FROM tbl_Status 
      WHERE [Status] = 'Blocked' 
       AND (UserId = tbl_Friends.SenderId 
        OR UserId = tbl_Friends.ReciverId) 
       AND UserId <> tbl_Registrations.id) BlockedFriendsCount 
FROM tbl_Friends 
INNER JOIN tbl_Registrations ON tbl_Friends.SenderId = tbl_Registrations.Id 
    OR tbl_Friends.ReciverId = tbl_Registrations.Id 
WHERE (tbl_Friends.Status = 'Accept') 
GROUP BY tbl_Registrations.FirstName 
+0

エラーが発生しています:列tbl_Friends.SenderIdが集計関数またはgroup by clause.Column tbl_Friends.ReciverIdに含まれていないため選択リストで無効です。これは集約関数またはgroup by節に含まれていないためです。列tbl_Registrations.Idは集計関数またはgroup by節に含まれていないため、選択リストでは無効です@ Abdul Rasheed – Ritz

関連する問題