Witam,
mam problem ze strukturą bazy danych oraz sposobem rozwiązania dla następującego zagadnienia:
na stronie użytkonicy mają możliwości dodawania przyjaciół, więc do tego zrobiłem tabelez polami:
user_id,friend_id
będzie dużo użytkowników więc istnieje osobna tabela, dla uzytkowników zignorowanych i czekających na akceptację:
user_id,friend_id,type
wiadomo po zaakceptowaniu użytkownik zostaje przeniesiony do pierwszej tabeli
Teraz jeśli wchodzę na stronę jakiegoś użytkownika to chcę zobaczyć wspólnych przyjaciół oraz takich, których tylko on ma... więc mam takie zapytanie:
SELECT friend_id FROM tabela WHERE user_id = 1 AND friend_id IN (SELECT friend_id FROM tabela WHERE user_id = 2)
//czyli dotąd można powiedzieć, że mam gotowe i wiem jak zrobić
Do tego pojawia sie jeszcze jedno zagadnienie, gdy wejdę na stronę użytkownika, który nie jest moim znajomym, a jest znajomym mojego znajomego to musi się tam wyświetlić powiązanie, tj "ja -> mój znajomy -> użytkownik na którego stronie jestem" obsługiwane ma być maksymalnie 4 krotne zagłębianie, np "ja -> mój znajomy -> znjomy znajomego -> użytkownik" gdy do tego użytkownika nie ma powiązania w 4 krokach nic się nie wyświetla
Mógłby ktoś poradzić jak zaprojektować bazę dla tych powiązań i jak mniej więcej rowzwiązać to od strony php?
Myślę, że jeśli będe miał już bazę z php będzie mniejszy problem.