Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MySQL] sortowanie wg wartości średniej 2 kolumn
Forum PHP.pl > Forum > Bazy danych > MySQL
pjanek
Witam,
chciałbym prosić o pomoc przy sortowaniu tabeli chodzi oto że:
sortuję tabelę wg wartości średniej dwóch kolumn
  1. <?php
  2. ... WHERE f.id=e.id ORDER BY (f.total_value/f.total_votes) DESC ...
  3. ?>

wynik oczywiście uzyskuję ale na końcu, tz mam załóżmy 50 rekordów, do 5 została dodana ocena i w pierwszej kolejności są wyniki w których pole f.total_value ma wartość 0, a dopiero ostatnie 5 rekordów jest posortowane. Jeśli dam sortowanie ASC zamiast DESC to zmienia sortowanie ale również na końcu czyli najpierw 45 rekordów tam gdzie jest 0, a dopiero ostatnie 5 jest posortowane.
Oczywiście domyślne wartości w tych kolumnach to 0, jak zrobić aby te wyniki gdzie zostały oddane głosy były rzeczywiście na pierwszych miejscach, a dopiero później za nimi te gdzie nie oddano głosów??
proszę o wskazówki
z góry dziękuje
pozdrawiam
Cienki1980
A nie wystarczy dodać do zapytania
  1. WHERE f.total_votes>0 ...


Wtedy będziesz miał tylko te rekordy z głosami i posortowane wg średniej.
pjanek
niby wystarczy, ale ograniczyłbym wyniki wyszukiwania tylko do tych rekordów które zostały ocenione, a nie chciałbym tego robić.
Wolałbym aby wyświetlały się wszystkie dane tylko posortowane od największej oceny.
Dręczy mnie myśl dlaczego przy takim założeniu nie sortuje mi tego tak jak powinny, tylko daje na początku pola z wartością 0??
kris2
zadaj zapytanie z UNION, jedno o ocenione rekordy a drugie o nieocenione.
pjanek
sorry, ale czy mógłbyś trochę jaśniej, przyznam że nie bardzo kumam o co chodzi??
kris2
  1. SELECT id, costam*2 AS costam FROM tabela WHERE id>5
  2. UNION
  3. SELECT id, costam*4 AS costam FROM tabela WHERE id<=5


taki przykład, mysle że kumasz

http://en.wikipedia.org/wiki/Union_(SQL) - googlanie nie boli
pjanek
Cytat(kris2 @ 1.10.2007, 10:16:52 ) *

widzisz aby szukać trzeba wiedzieć co, ja wtedy jeszcze nie widziałem co mam szukać!
Ok może i UNION jest rozwiązaniem ale to ingerencja w zapytanie przed WHERE które mam już skonstruowane i na tym zapytaniu oparte całe wyniki wyszukiwania, wiele by mi to skomplikowało, natomiast chciałbym uzyskać właściwy efekt wpisując odpowiedni warunek czyli po WHERE.
Czy jest to możliwe? Czy może szukam czegoś niemożliwego, proszę o odpowiedz.
kris2
nic co nie zaburzyl tego co masz przed WHERE nie przychodzi mi do glowy smile.gif
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-2024 Invision Power Services, Inc.