![]() |
![]() ![]() |
![]() |
-herbaciarz- |
![]()
Post
#1
|
Goście ![]() |
Witam,
Mam taki problem. Mam moduł znajomych, tabelę friends, w niej pola: friendsid, date, friend1id, friend2id Pole friend1id to ID osoby zapraszającej. Pole friend2id to ID osoby zapraszanej. Załóżmy, że mamy użytkownika o ID=1. Interesuje nas wyświetlenie wszystkich znajomych użytkownika, czyli wszystkie rekordy gdzie w jednym z dwóch pól friend1id lub friend2id znajdzie się nasze ID=1.
Pytanie brzmi: Jak napisać zapytanie, żeby w wynikach w jednej kolumnie zawsze było ID "przeciwne". Czyli tutaj nie 1. Czyli interesuje mnie wynik w zbliżonej postaci jak:
Oczywiście nie interesują mnie jakieś obejścia w postaci warunków w PHP, ponieważ chciałbym później ciut rozbudować zapytanie do własnych potrzeb, ale jak pokonam tę barierę to dalej powinienem sobie poradzić. Czy można się posłużyć jakimś IF, może jakieś inne sugestie? |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 142 Pomógł: 32 Dołączył: 21.08.2008 Skąd: Toruń Ostrzeżenie: (0%) ![]() ![]() |
A coś takiego?
-------------------- ![]() |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 2 178 Pomógł: 596 Dołączył: 25.09.2009 Skąd: Piwniczna-Zdrój Ostrzeżenie: (0%) ![]() ![]() |
Można posłużyć się MySQL-owym IF-em:
lub CASE-em:
lub UNION:
Przy czym wydajność musisz sprawdzić na większej liczbie rekordów i nie gwarantuję, że będzie ona wysoka. @jasin: Kolego Twoje zapytanie nie wybiera znajomych użytkownika o identyfikatorze 1, ale wszystkie inne osoby. Ten post edytował mortus 28.03.2012, 21:20:46 |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 2 Pomógł: 0 Dołączył: 28.03.2012 Ostrzeżenie: (0%) ![]() ![]() |
Dzięki mortus, Tobie jasin również dziękuję
![]() ![]() PS. W końcu się zarejestrowałem ![]() |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 2 178 Pomógł: 596 Dołączył: 25.09.2009 Skąd: Piwniczna-Zdrój Ostrzeżenie: (0%) ![]() ![]() |
...jeśli chodzi o wydajność to zawszę mogę ograniczyć pobieranie znajomych np. do 50 jednocześnie. Niestety nie wpłynie to na wzrost wydajności, ponieważ ograniczenie zbioru wyników zapytania od określonego miejsca i do określonej liczby odbywa się zawsze na końcu (jest ostatnią "czynnością" podczas wykonywania zapytania). Ten post edytował mortus 28.03.2012, 22:25:50 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 21.08.2025 - 19:12 |