2017-11-18 2 views
0

どのように私は友人のSQLクエリを取得できますか?フォローしている友達とフォロワーの関係のテーブルを

私のSql

しかし、私は得ることができないのクエリに続いて共通の友人

enter image description here

id | user_id 
-------------- 
1 | 2 
2 | 3 
3 | 4 
4 | 1 

Relation Table 

id | follower_id | following_id 
-------------------------------- 
1 | 1   | 2 
2 | 2   | 1 
3 | 1   | 4 
4 | 4   | 3 
5 | 4   | 1 

"SELECT `user_id` FROM " . T_USERS . " WHERE `user_id` IN (SELECT `following_id` FROM " . T_FOLLOWERS . " WHERE `follower_id` = {$user_id} AND `following_id` <> {$user_id} AND `active` = '1') AND `active` = '1' "; 

フォロワークエリ

" SELECT `user_id` FROM " . T_USERS . " WHERE `user_id` IN (SELECT `follower_id` FROM " . T_FOLLOWERS . " WHERE `follower_id` <> {$user_id} AND `following_id` = {$user_id} AND `active` = '1') AND `active` = '1'"; 
+0

編集ご質問や、サンプルのデータ*と*望ましい結果を提供します。 「相互の友人」とはどういう意味ですか? 「友人」は、「フォロー」や「フォロワー」という概念に関係しているのでしょうか? –

答えて

0
SELECT `user_id` FROM " . T_USERS . " 
WHERE `user_id` IN (SELECT CASE WHEN `following_id`={$user_id} THEN `follower_id` ELSE `following_id` END user 
         FROM " . T_FOLLOWERS . " 
         WHERE `active` = '1' 
         AND ((`follower_id` = {$user_id} AND `following_id` <> {$user_id}) 
          OR (`follower_id` <> {$user_id} AND `following_id` = {$user_id})) 
         GROUP BY user 
        HAVING count(*)=2 
        ) 
    AND `active` = '1' 
+0

私はお互いの友人を得ていません –

+0

@SajalKoley Working ... http://sqlfiddle.com/#!9/91e3e/1 – Mike

+0

これはすべての友達bt私は2人のユーザーの間に相互の友人が必要です –

関連する問題