Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL] Statystyki, top ten, ranking - problem
Forum PHP.pl > Forum > Przedszkole
green90
Witajcie,

Mam tabelę MySQL, w jednej z kolumn są dane w rodzaju:

Kowalska
Nowak
Iksińska
Kowalska
Igrekowska
Iksińska
Nowak
Leszczyńska
Igrekowska
Kowalska
Opalińska
Kowalska

Jak widać - nazwiska w wierszach tej kolumny się powtarzają, w każdym wierszu tej kolumny jest tylko jedno nazwisko.
Jak zrobić ranking, statystyki, topten jakie nazwiska się najczęściej powtarzają? Chodzi mi o coś w rodzaju:

Miejsce | Nazwisko | Ilość wystąpień
1 Kowalska 4 wystąpienia
2 Nowak 2 wystąpienia
3 Iksińska 2 wystąpienia
4 Igrekowska 1 wystąpienie
5 Opalińska 1 wystąpienie
6 Leszczyńska 1 wystąpienie

Bardzo proszę o pomoc smile.gif Kombinowałem z COUNT, GROUP i nie wychodzi...
nospor
Cytat
ardzo proszę o pomoc Kombinowałem z COUNT, GROUP i nie wychodzi...
To pokaz jak kombinowales a my ci pokazemy co robiles źle
green90
OK, już się poprawiam: Kolumna z nazwiskami nazywa się nazwisko, a tabela w bazie MySQL - tabela.

Kod
$zapytanie = mysql_query("SELECT nazwisko FROM tabela GROUP BY nazwisko");
$topten = mysql_num_rows($zapytanie);

.
.
.
.

<? PHP echo $topten; ?>


Przepraszam za swoją niewiedzę, dopiero zaczynam... i utknąłem na takim problemie smile.gif
nospor
no dobra, a gdzie tu COUNT, z ktorym niby cos kombinowales? Nie ladnie tak klamac winksmiley.jpg

  1. SELECT nazwisko, count(nazwisko) ilosc FROM tabela GROUP BY nazwisko

i juz smile.gif

Teraz przy pomocy petli i mysql_fetch_array() (patrz manual) musisz odebrac dane
SirZooro
Jak chcesz mieć to jeszcze posortowane wg popularności to dodaj jeszcze ORDER BY COUNT(nazwisko) DESC na końcu.
green90
Witajcie, to znowu ja... smile.gif

Kod
<?php

/* topten najwiekszych upierdliwcow */
$zapytanie = mysql_query("SELECT nazwisko, COUNT(nazwisko) '10' FROM tabela GROUP BY nazwisko");
while($wynik=mysql_fetch_array($zapytanie))
echo $wynik["ID_User"];

?>


Powyższy kawałek kodu działa - wyświetla wszystkie unikalne nazwiska znalezione w kolumnie "nazwisko" - czyli wycina powtarzające się.

Niestety nie dałem rady z posortowaniem tego według ilości wystąpień malejąco oraz jak zrobić żeby obok nazwiska była wyświetlana liczba jego wystąpień w kolumnie "nazwisko"? Nie działa niestety też zawężenie wyników do 10 najpopularniejszych, wyświetlają się wszystkie...

Any ideas...? smile.gif
nospor
cos ty na tworzyl? Widziales co ci dalem? To czemu tego nie uzyles? A do zawezania sluzy limit.
I uzywaj wlasciwego bbcode
  1. <?php
  2. $zapytanie = mysql_query("SELECT nazwisko, COUNT(nazwisko) ilosc FROM tabela GROUP BY nazwisko order by ilosc desc limit 10");
  3. while($wynik=mysql_fetch_array($zapytanie)) 
  4. echo $wynik["nazwisko].' '.$wynik['ilosc'];
  5. ?>


Na przyszlosc jak sie nie znasz to nie wymyslaj tylko zajrzyj do manuala 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-2025 Invision Power Services, Inc.