0

データベースで関係を追跡する友人テーブルがあります-友人の友人からプロファイル情報を取得するサブクエリを使用してクエリをまとめました

私の友達のテーブルは以下のようになります。私は 1 の ID を持つユーザーです - 私の友達は 5 と 3 です

rel 1 | rel 2
--------------
1     |    5
5     |    1
3     |    5
5     |    3
1     |    3
3     |    1

私のクエリは次のようになります

SELECT user_id, first_name, last_name, email, town, county, profile_img_small 
FROM sign_up 
WHERE user_id IN (SELECT DISTINCT f.rel2 FROM friends f
WHERE f.rel1 IN (SELECT f2.rel2 FROM friends f2 WHERE f2.rel1 = '$my_id') AND f.rel2 !    = '$my_id') ORDER BY first_name ASC, last_name ASC

これに関する問題は、スクリプトがあなたが知っている可能性のある人を提案することを意図しているにもかかわらず、私の友人リストに含まれている人が含まれていることです.

既に友達になっているユーザーを除外して同じクエリを取得するにはどうすればよいですか

4

2 に答える 2

2

代わりにこれを試してください:

SELECT *
FROM sign_up
WHERE user_id NOT IN
(
   SELECT rel1 FROM friends WHERE rel2 = '$my_id'
   UNION 
   SELECT rel2 FROM friends WHERE rel1 = '$my_id'
)
于 2013-01-04T08:19:20.257 に答える