Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Pobieranie listy znajomych
Forum PHP.pl > Forum > PHP
dkruczek
Mam system znajomych oparty na tabeli 'friends':

friends_id
friends_from
friends_to
friends_accepted

Do tego jest tabela z użytkownikami, która łączy się z tą:

(w skrócie)
user_id
user_login

Mam pytanie jak najprościej pobrać listę znajomych użytkownika x posortowaną według loginów?
em1X
join + order by
dkruczek
Wszystko byłoby łatwe, gdyby id użytkownika było tylko w jednej kolumnie w tabeli friends. A przecież id może być i w kolumnie from, i w kolumnie to. I tutaj już problemu ogarnąć nie potrafię.
erix
Dwa zapytania łączone przez UNION?
em1X
nic nie rozumiem z tego co piszesz.. jeżeli masz problem z połączeniem dwóch tabel oznacza to, że tabele są źle zaprojektowane
dkruczek
Zobacz... jeśli chcę pobrać wszystkich znajomych użytkownika, to muszę z tabeli 'friends' pobrać wszystkie rekordy, w których jest on zapraszajacym, jak też te w których był zapraszany. Dodatkowo muszę pobrać dane każdego znajomego z tabeli 'users', czyli najprosciej można to zrealizować dwoma zapytaniami:

Kod
select * from friends, users where friends.from = 'x' and friends.to = users.user_id order by users.login


i drugie analogicznie tylko friends.to = 'x'.

Problem polega na tym, ze wtedy będę miał dwie porcje posortowanych danych, któe mogę conajwyżej zapisać w jednej tabeli. Dalej będą one jednak od siebie niezależne, bo wyjdzie coś takiego:

a
b
c
d
a
b
c
d

Cały myk polega na tym, że chcę odrazu uzyskać posortowaną całą tablicę z przyjaciółmi:

a
a
b
b
c
c
d
d
erix
  1. SELECT * FROM (SELECT * FROM friends, users WHERE friends.FROM <span style='color:orange'>= 'x' AND friends.TO = users.user_id) ORDER BY ORDER BY users.login

Klepane z palca.
dkruczek
To dalej nie jest to, to wybiera jedynie tych znajomych, których zaprosił użytkownik. Gdy to on był zaproszony przez kogoś ten ktoś już na liscie znajomych naszego użytkownika nie będzie figurował...
erix
A:
Kod
select * from friends left join users on friends.from = users.user_id UNION select * from friends left join users on friends.to = users.user_id
?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.