Robię do swojej stronki coś w stylu listy znajomych takiej jak we wszystkich serwisach społecznościowych.
Mam tabele znajomi w której są kolumny
| id_1 | id_2 | akt |
Pierwsza kolumna przechowuje id jednej osoby, a druga drugiej, które się znają. KOlumna akt przechowuje boolowską zmienną czy zapraszana osoba już akceptowała znajomość czy nie.
Żeby pobrać znajomych użytkownika x musze przeszukać obie kolumny pod względem idx'a tam gdzie akt=1 i joinować drugą tabele żeby pobrać imiona jego znajomych.
Pytanie moje brzmi czy można to zrobić wszystko w jednym zapytaniu?
Bo w dwóch można tak:
SELECT login FROM users WHERE id=(SELECT id_1 FROM znajomi WHERE id_2 = 'idx' AND akt = '1')
a potem drugą kolumnę
SELECT login FROM users WHERE id=(SELECT id_2 FROM znajomi WHERE id_1 = 'idx' AND akt = '1')
Ale wtedy robią się naprawdę 4 zapytania

Przy takim zapytaniu:
SELECT id_1,id_2 FROM users WHERE (id_1='idx' OR id_2='idx') AND akt ='1'
dostane dwie kolumny i w jednej albo w drugiej w każdym wierszu bedzie idx, ktore jest zbedne i tylko niepotrzebnie zwieksza bazie czas wykonywania select'a. Czy jest możliwość odrzucenia idx i uzyskania jednej kolumny z samymi id jego znajomych?
I w ogóle czy takie rozwiązania usługi "znajomych" są dobre, czy znacie jakiś lepszy patent?