友情を追跡する多対多のテーブルがあります。
両方の友人がお互いを承認したことを知る必要があります。
たとえば、ある人が友達になるように頼むと、その人の ID が self_uuid に入れられ、友達は friend_uuid に入れられます。友人がリクエストを承認すると、同じことが起こりますが、その逆です。
相互に承認したすべての人をどのように見つけるのですか? 相互に承認していないすべての人を見つけるにはどうすればよいですか?
友情を追跡する多対多のテーブルがあります。
両方の友人がお互いを承認したことを知る必要があります。
たとえば、ある人が友達になるように頼むと、その人の ID が self_uuid に入れられ、友達は friend_uuid に入れられます。友人がリクエストを承認すると、同じことが起こりますが、その逆です。
相互に承認したすべての人をどのように見つけるのですか? 相互に承認していないすべての人を見つけるにはどうすればよいですか?
相互承認:
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