Witam, potrzebuję napisać zapytanie które mi pobierze pozycje danego rekordu. Może inaczej. Piszę sobie zapytanie
Kod
SELECT * FROM tabela ORDER by punkty DESC
To mi zwraca rekordy posortowane po ilosci jakis tam punktow. Mnie interesuje konkretny rekord i pozycja jego - ranking. Jak napisać takie zapytanie bez pobierania danych i wykorzystywania pętli?
elektrrrus
20.12.2011, 01:04:47
Można jaśniej? Nie wiem jak inni, ale ja bez szklanej kuli nic z tego nie rozumiem.
uupah5
20.12.2011, 08:21:13
Kod
SELECT count(*) FROM tabela where punkty<[kryterium]
gdzie kryterium to ilość punktów dla sprawdzanego rekordu
ew jeśli chcesz liczyć pozycje zajmowane ex equo jako jedną pozycje to count(distinct punkty)
Pilsener
20.12.2011, 10:16:43
Tak tego nie zrobisz. Liczenie w locie jakiś rankingów, statystyk, średnio-ważonych cen materiałów metodą LIFO czy FIFO zabije bazę.
Dodaj sobie pole "place" i przeliczaj ranking co jakiś czas (np. co 5 minut) cronem. Potem wystarczy tylko pobrać, że już nie wspomną o sytuacji kiedy chcesz wyświetlać miejsce które zajmuje np. jakiś produkt na liście wyszukania.