Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Numer wiersza a group by
Forum PHP.pl > Forum > Przedszkole
Demoneos
Mam mniej więcej taką zawartość bazy danych:
Cytat
id miejscowosc wygrana
1 Warszawa 400
2 Poznac 370
3 Wroclawa 360
4 Krakow 350
5 Gdansk 320
6 Warszawa 300
7 Szciecin 290
8 Warszawa 280
itd.


Mam mniej więcej takie zapytanie:
  1. SELECT count(miejscowosc) AS liczba_wygranych FROM $this->tabela GROUP BY miejscowosc ORDER BY liczba_wygranych DESC

ktore zwaraca mi takie wyniki:
Cytat
miejscowosc liczba_wygranych
Warszawa 83
Kraków 31
Łódź 24
Poznań 24
Gdańsk 22
itd.


Czyli jest to pewien ranking - ile było wygranych w poszczególnych miastach.

Brakuje mi tylko jednej rzeczy - żeby zapytanie zwróciło także miejsce, które w tym rankingu zajmuje miasto:
Cytat
miejsce_w_rankingu miejscowosc liczba_wygranych
1 Warszawa 83
2 Kraków 31
3 Łódź 24
3 Poznań 24
4 Gdańsk 22
itd.


Wiem, że można to zrobić w PHP, ale czy jest sposób żeby taką informacje zwróciło zapytanie MySQL?
droslaw
google > mysql rekord number
i pierwszy wynik:
http://jimlife.wordpress.com/2008/09/09/di...ownum-in-mysql/
bostaf
Jest smile.gif Zmienne i trik ze sprawdzaniem wartości poprzedniego wiersza. Nieco to zawiłe, ale jak to rozpracujesz, to na pewno wykorzystasz w przyszłości.
Potrzebne są niestety dwa zapytania. W pierwszym inicjujemy zmienną. Potrzebna też jest dodatkowa kolumna w wyniku, jako referencja dla wyszukiwarki. Sztuczka z porównywaniem z poprzednią wartością jest po to, żeby w przypadku miejscowości o równej liczbie wygranych nie zwiększać licznika, tylko zostawić taki sam.
  1. SET @rank := 1;
  2. SELECT
  3. IF(@poprz > liczba_wygranych, @rank := @rank + 1, @rank) AS miejsce_w_rankingu,
  4. miejscowosc,
  5. liczba_wygranych,
  6. @poprz := liczba_wygranych AS referencja
  7. FROM (
  8. SELECT miejscowosc, count(miejscowosc) AS liczba_wygranych
  9. FROM ranking
  10. GROUP BY miejscowosc
  11. ORDER BY liczba_wygranych DESC
  12. ) AS podzapytanie, (SELECT @poprz := NULL) AS vars
  13. GROUP BY miejscowosc
  14. ORDER BY liczba_wygranych DESC;
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.