MySQL - sprawdzanie zapytań w 2 kierunkach
Wdrażam ”Dodaj znajomego„w mojej aplikacji internetowej, aby użytkownicy mogli dodawać innych użytkowników jako diabłów.
Mamy 2 stoły:tbl_users itbl_relations, tbl_users mają unikalny identyfikator dla zarejestrowanych użytkowników, a tbl_relations przechowuje użytkowników, którzy są przyjaciółmi, na przykład niektóre wiersze w tbl_relations to:
id user_id_1 user_id_2
1 4 6
2 4 8
3 8 23
4 12 84
5 3 4
...
W powyższych wynikach id jest unikalnym identyfikatorem dla zmiennych tbl_relations, user_id_1 jest kluczem obcym dla tbl_users, a user_id_2 jest kluczem obcym dla użytkowników tbl_users. „9” lub nie, tutaj musimy wysłać zapytanie na dwa sposoby, mam na myśli:
SELECT * FROM tbl_relations WHERE (user_id_1 = '4' AND user_id_2 = '9') OR (user_id_1 = '9' AND user_id_2 = '4')
Powyższe zapytanie wydaje mi się trochę dziwne, chyba powinien istnieć inny sposób implementacji tego, może inna struktura bazy danych?
Lub inne zapytanie, chcemy uzyskaćwspólni przyjaciele pomiędzy użytkownikami o identyfikatorze „4” i „8”, w jaki sposób mam uzyskać wspólnych znajomych w tym scenariuszu? czy jest na to lepsza struktura bazy danych?
Byłbym wdzięczny za wszelką pomoc.