0

友情を追跡する多対多のテーブルがあります。

両方の友人がお互いを承認したことを知る必要があります。

たとえば、ある人が友達になるように頼むと、その人の ID が self_uuid に入れられ、友達は friend_uuid に入れられます。友人がリクエストを承認すると、同じことが起こりますが、その逆です。

ここに画像の説明を入力

相互に承認したすべての人をどのように見つけるのですか? 相互に承認していないすべての人を見つけるにはどうすればよいですか?

4

1 に答える 1

3

相互承認:

select f1.self_uuid, f1.friend_uuid
from friends f1
join friends f2 on f1.self_uuid = f2.friend_uuid and f1.friend_uuid = f2.self_uuid

承認されていない友達リクエスト:

select f1.self_uuid, f1.friend_uuid
from friends f1
left join friends f2 on f1.self_uuid = f2.friend_uuid and f1.friend_uuid = f2.self_uuid
where f2.self_uuid is null
于 2013-08-26T19:17:02.517 に答える