![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 30 Pomógł: 0 Dołączył: 12.07.2006 Ostrzeżenie: (0%) ![]() ![]() |
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? |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 984 Pomógł: 41 Dołączył: 16.03.2002 Skąd: Płock Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 30 Pomógł: 0 Dołączył: 12.07.2006 Ostrzeżenie: (0%) ![]() ![]() |
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ę.
|
|
|
![]()
Post
#4
|
|
Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów ![]() |
Dwa zapytania łączone przez UNION?
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 984 Pomógł: 41 Dołączył: 16.03.2002 Skąd: Płock Ostrzeżenie: (0%) ![]() ![]() |
nic nie rozumiem z tego co piszesz.. jeżeli masz problem z połączeniem dwóch tabel oznacza to, że tabele są źle zaprojektowane
|
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 30 Pomógł: 0 Dołączył: 12.07.2006 Ostrzeżenie: (0%) ![]() ![]() |
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 Ten post edytował dkruczek 2.07.2009, 19:21:18 |
|
|
![]()
Post
#7
|
|
Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów ![]() |
|
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 30 Pomógł: 0 Dołączył: 12.07.2006 Ostrzeżenie: (0%) ![]() ![]() |
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ł...
Ten post edytował dkruczek 2.07.2009, 23:01:01 |
|
|
![]()
Post
#9
|
|
Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów ![]() |
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 ?
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 15.09.2025 - 23:03 |