Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Pobranie rekordów posortowanych od danego miejsca
Forum PHP.pl > Forum > Bazy danych
Mion
Witam ponownie,

mam problem sad.gif a mianowicie chodzi o pobranie rekordów zdjęć posortowanych po ilości komentarza malejąco komentowanych np komentowane <= 22 razy i tak jest w zamieszczonym zapytaniu, ale problem jest taki by rekordy pobrać od danego id zdjęcia np U.idz = 2696 w "dół".
Mam nadzieję, że wyraziłem się zrozumiale. Dla ułatwienia zamieszczam zapytanie i rekordy:



Proszę o pomoc
darko
dodaj do warunków where ... AND U.idz > 2696
Mion
hehe, to się właśnie nasuwa jako piesze, ale popatrz sobie na rekordy i zastanów się jeszcze raz nad sensem Twojej odpowiedzi nie tylko do tego konkretnego przykładu, ale zasady o jaką mi chodzi ...
Widać to od razu zmieniając kryteria na AND U.komentowane <= 21 i dla idz = 2898
darko
(...) where (...) AND U.idz > 2696 (...) ORDER BY U.komentowane DESC, U.zdjecie_ogladano DESC, U.idz ASC LIMIT 10
Mion
Nadal jesteś w błędzie:

Id zdjęcia nie może być brane wcale pod uwagę w tym zapytaniu do sortowania.
darko
Chyba w ogóle nie dodałeś podanych przeze mnie warunków, wyniki są nadal sortowane według kolumny zdjecie_ogladano, a idz nie jest większe od 2696, ale być może nadal jestem w błędzie...
Mion
@ale być może nadal jestem w błędzie...
Niestety, ale problem jest bardziej złożony
darko
Cytat(Mion @ 28.12.2009, 13:53:50 ) *
@ale być może nadal jestem w błędzie...
Niestety, ale problem jest bardziej złożony

Może rozwiń myśl? Pokaż jak teraz wygląda Twoje zapytanie.
Mion
Proszę bardzo:


I właśnie problem jest taki jak pobrać rekordy od danego idz np 16 "w dół" na tym widoku które były oceniane 4 razy malejaco...
Albo pozycję [OD] danego idz w danym sortowaniu wtedy sposiłkował bym się klauzulą LIMIT OD,ILE
darko
No to tak: albo sortujesz po ilości komentarzy, albo po ilości odsłon albo po wartości klucza. Po co Ci tutaj sortowanie po ilości komentarzy i tak określasz w warunkach przedział. Problemem jest tutaj sortowanie jednocześnie po ilości odsłon i wartości klucza, te dwa warunki wykluczają się nawzajem stąd ten problem. Jeśli ważniejsza jest kolejność wg wartości klucza, to wywaliłbym pozostałe warunki sortowania i zostawił:

  1. SELECT U.idz, U.komentowane, U.zdjecie_ogladano, U.zdjecie_nazwa FROM UserZdjecia U
  2. WHERE U.komentowane>=1 AND U.komentowane <=22 AND U.idz >= 2696
  3. ORDER BY U.idz ASC


// edit
Może problem ten da się rozwiązać z pomocą tabeli tymczasowej?
Mion
OK dziękuję za poświęcony czas, ale Twoje odpowiedzi z AND U.idz >= 2696 nie rozwiązują problemu, a tym bardziej rezygnacja z danego sortowania...

@Może problem ten da się rozwiązać z pomocą tabeli tymczasowej?
Tak zapisywanej z procedur składowanych z dodatkową kolumną INT pozycja i idz w danym sortowaniu. Jest to ostateczne rozwiązanie jakie mam w zanadrzu...
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.