![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 44 Pomógł: 0 Dołączył: 22.02.2011 Skąd: Sierpc Ostrzeżenie: (0%) ![]() ![]() |
Witam, próbuję sortować dane z wcześniej otrzymanego wyniku. Wygląda to tak:
Mam tabelę ulubione Kod +----+---------+-------------+ | id | user_id | ulubiony_id | +----+---------+-------------+ | 1 | 1 | 2 | +----+---------+-------------+ | 2 | 1 | 3 | +----+---------+-------------+ | 3 | 2 | 3 | +----+---------+-------------+ i uzytkownik z user_id i nazwiskiem Chcę sprawdzić ulubionych użytkowników user'a_id np. "1" i z tabeli "uzytkownik" i wyświetlić wynik w kolejności alfabetycznej pola "nazwisko" z tabeli "uzytkownik". Podacie mi jakieś wskazówki? Umiem sortować dane, ale nie jak zrobić zapytanie z wyników innego zapytania. Pozdrawiam. |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 54 Pomógł: 12 Dołączył: 4.08.2007 Ostrzeżenie: (0%) ![]() ![]() |
Nie wiem czy o to Ci chodzi, ale może na coś Cię to nakieruje:
To zapytanie powinno wyświetlać ulubionych użytkownika o user_id=1 posortowane według nazwiska. Pisałem bez sprawdzania, ale chyba nie zrobiłem żadnego błędu. O to Ci chodziło? |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 44 Pomógł: 0 Dołączył: 22.02.2011 Skąd: Sierpc Ostrzeżenie: (0%) ![]() ![]() |
Hmmm, nie za bardzo rozumiem te zapytanie.
Zrobiłem zapytanie na twoim kodzie i coś mi chyba nie wychodzi. Pomimo, że w bazie danych są podani użytkownicy i lista ulubionych to zmienna $liczba_elementow zawsze wynosi 0, a pętla nic nie wyświetla... Kod $zapytanie = mysql_query("select a.ulubiony_id from ulubione as a left join uzytkownik as b on a a.ulubiony_id = b.user_id where a.user_id = 1 order by b.nazwisko asc"); $liczba_elementow = mysql_num_rows($zapytanie); echo $liczba_elementow."<br />"; while ($wiersz = mysql_fetch_assoc($zapytanie)) { echo $wiersz['a.ulubiony_id']."|"; } Powinien być taki wynik: Kod 2
3|2| |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 54 Pomógł: 12 Dołączył: 4.08.2007 Ostrzeżenie: (0%) ![]() ![]() |
Nie sprawdzasz czy mysql_query() wykonało się poprawnie. Sprawdź jaki jest błąd (funkcja mysql_error()). W końcu nie widziałem twojej bazy i może jakaś tabela albo pole nazywa się inaczej, albo literówkę popełniłem.... choć na kolejny rzut oka moje zapytanie jest ok.
Jeśli nie wiesz co to LEFT JOIN to możesz zapisać: SELECT ... FROM ulubione, uzytkownik WHERE ulubione.ulubiony_id = uzytkownik.user_id AND ... Sortować można i po dwóch parametrach: odzielasz je poprostu przecinkiem np ... ORDER BY ulubione.user_id DESC, uzytkownik.nazwisko ASC. A wynik chyba powinien być: 3 3|2 Przynajmniej tak wynika z tej tabelki co narysowałeś w pierwszym poście. życzę powodzenia |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 44 Pomógł: 0 Dołączył: 22.02.2011 Skąd: Sierpc Ostrzeżenie: (0%) ![]() ![]() |
Poczytałem o LEFT JOIN i wszystko już rozumiem, problem chyba tkwił w "as", a poprawne zapytanie wygląda tak:
Kod select ulubione.ulubiony_id from ulubione join uzytkownik on ulubione.ulubiony_id = uzytkownik.user_id where ulubione.user_id = 1 order by uzytkownik.nazwisko asc A tak cały kod Kod $zapytanie = mysql_query("select ulubione.ulubiony_id from ulubione join uzytkownik on ulubione.ulubiony_id = uzytkownik.user_id where ulubione.user_id = 1 order by uzytkownik.nazwisko asc"); $liczba_elementow = mysql_num_rows($zapytanie); echo $liczba_elementow."<br />"; while ($wiersz = mysql_fetch_assoc($zapytanie)) { echo $wiersz['ulubiony_id']."|"; } Dzięki, temat do zamknięcia. Pozdrawiam. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.08.2025 - 04:34 |