0

ユーザーがいて、ユーザーが友達になることができるとします。ユーザーとユーザーデータのテーブル、および友情のテーブル(接続ID、ユーザーA ID、ユーザーB ID)があります。

ユーザー x と友達である users テーブルからすべてのユーザーを取得する、mySQL で実行できる単一のクエリはありますか? ユーザー x の ID がフレンドシップ テーブルの a スロットまたは b スロットにある可能性があるという事実は、これを私が理解できるよりも複雑にしています。

明確にするために編集:

現在のユーザーの友達の users テーブル内のすべてのデータが必要です。したがって、現在のユーザーがフレンドシップ テーブルのユーザー a である場合、またはその逆の場合、ユーザー b のユーザー データが必要です。友情テーブルの関係に基づいて、現在のユーザーのすべての友人 (users テーブルから) のすべてのデータを取得したいと考えています。

4

2 に答える 2

4

SQL Fiddleを使用すると、次のことができます。

SELECT u.name as friends
FROM friendship AS f
JOIN users AS u ON 
  ((u.user_id = f.user_a_id AND f.user_b_id = @user_id)
  or (u.user_id = f.user_b_id AND f.user_a_id = @user_id))
where u.user_id is not null;

これ@user_idは、友達を見つけたいユーザーのID番号で、出力は友達の名前です。

于 2012-06-12T19:48:11.367 に答える
0
SELECT users.user_id FROM users, friends WHERE (users.user_id=friends.user_a_id AND friends.user_b_id=x) OR (users.user_id=friends.user_b_id AND friends.user_a_id=x);
于 2012-06-12T19:43:37.483 に答える