Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP]Najwięcej powtórzeń - jak zapytać?[ROZWIĄZANE]
slupek
post
Post #1





Grupa: Zarejestrowani
Postów: 36
Pomógł: 0
Dołączył: 27.05.2007
Skąd: EPGD

Ostrzeżenie: (0%)
-----


Serwus,

mam w tabeli "origin_id" gdzie mamy nieskończoną liczbę czteroliterowych wartości.

Chcę wyświetlić pięć najszczęściej występujących (powtarzających się) wartości. Coś w stylu TOP5.

Wiem jak to zrobić dla skończonego zbioru, ale nie mam pojęcia, jak skonstruować zapytanie, gdy "origin_id" może być dowolny.

Pomoże ktoś?

Ten post edytował slupek 24.11.2009, 16:09:01
Go to the top of the page
+Quote Post
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
gdzie mamy nieskończoną liczbę czteroliterowych wartości
Kombinacje czteroliterowego ciągu są z reguły skończone winksmiley.jpg

poczytaj w manualu mysql o group by oraz count


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
slupek
post
Post #3





Grupa: Zarejestrowani
Postów: 36
Pomógł: 0
Dołączył: 27.05.2007
Skąd: EPGD

Ostrzeżenie: (0%)
-----


Źle się wyraziłem - są skończone, ale ja mam może 50 - 100 różnych, a mogą się pojawić nietypowe, nie chcę ręcznie ustalać zakresu.

Gdzieś coś paprzę, bo mi krzaczy.

  1. $query = "SELECT COUNT(origin_id) AS ile FROM reports GROUP BY origin_id ORDER BY ile DESC LIMIT 5";
  2. $result = mysql_query($query);
  3. $number = mysql_numrows($result);
  4.  
  5.  
  6. while ($row = mysql_fetch_array($result, MYSQL_BOTH)) {
  7. printf ("APT: %s Ldgs: %s", $row[origin_id], $number);
  8.  
  9. }
Go to the top of the page
+Quote Post
tvister
post
Post #4





Grupa: Zarejestrowani
Postów: 253
Pomógł: 29
Dołączył: 18.08.2008

Ostrzeżenie: (0%)
-----


origin_id brakuje w sql zapytaniu


--------------------
Kto rano wstaje ten leje jak z cebra.
Go to the top of the page
+Quote Post
Meares
post
Post #5





Grupa: Zarejestrowani
Postów: 102
Pomógł: 13
Dołączył: 16.10.2009
Skąd: Łódź

Ostrzeżenie: (0%)
-----


Dajesz COUNT(`orgin_id`) AS 'ile', więc w pętli powinieneś użyć $row['ile'].


--------------------
manual mmocenter
Nie pomagam na PW!
Go to the top of the page
+Quote Post
slupek
post
Post #6





Grupa: Zarejestrowani
Postów: 36
Pomógł: 0
Dołączył: 27.05.2007
Skąd: EPGD

Ostrzeżenie: (0%)
-----


Cytat(Meares @ 24.11.2009, 14:02:03 ) *
Dajesz COUNT(`orgin_id`) AS 'ile', więc w pętli powinieneś użyć $row['ile'].

Krok do przodu, dzięki.

Klik

Tylko nie sczytuje mi wartości z $orgin_id dla każdego wyniku.

(sorki za post pod postem) Ok, doszedłem do celu, działa; teraz kosmetyka: źle określam zmienne, żeby to wstawić do tabelki?

  1. <?php
  2.  
  3. @define ("MYSQL_CONNECT_INCLUDE", "connect_db.php");
  4.  
  5.  
  6.  
  7. include(MYSQL_CONNECT_INCLUDE);
  8.  
  9. $query = "SELECT origin_id , COUNT(origin_id) AS ile FROM reports GROUP BY origin_id ORDER BY ile DESC LIMIT 5";
  10. $result = mysql_query($query);
  11. $number = mysql_numrows($result);
  12.  
  13. print "<table bgcolor=FFFFFF width=30% border=0>";
  14. print "<td bgcolor=FFFFFF width=50% height=18 align=center><font face=Arial color=#000000 size=2><b>Airport</b></font></td>";
  15. print "<td bgcolor=FFFFFF width=50% height=18 align=center><font face=Arial color=#000000 size=2><b>Takeoffs</b></font></td>";
  16.  
  17.  
  18.  
  19.  
  20. while ($row = mysql_fetch_array($result, MYSQL_BOTH)) {
  21.  
  22. $a= ("%s",$row[origin_id]);
  23. $l= ("%s",$row[ile]);
  24.  
  25. print "<td bgcolor=FFFFFF width=50% height=18 align=center><font face=Arial color=#000000 size=2><b>$a</b></font></td>";
  26. print "<td bgcolor=FFFFFF width=50% height=18 align=center><font face=Arial color=#000000 size=2><b>$l</b></font></td>";
  27.  
  28.  
  29.  
  30. }
  31.  
  32.  
  33. php?>


Rozwiązane, dziękuję wszystkim za cenne wskazówki.

  1. <?php
  2.  
  3. @define ("MYSQL_CONNECT_INCLUDE", "connect_db.php");
  4.  
  5.  
  6.  
  7. include(MYSQL_CONNECT_INCLUDE);
  8.  
  9. $query = "SELECT origin_id , COUNT(origin_id) AS ile FROM reports GROUP BY origin_id ORDER BY ile DESC LIMIT 10";
  10. $result = mysql_query($query);
  11. $number = mysql_numrows($result);
  12.  
  13. print "<table bgcolor=FFFFFF width=30% border=1>";
  14. print "<td bgcolor=FFFFFF width=50% height=18 align=center><font face=Arial color=#000000 size=2><b>Airport</b></font></td>";
  15. print "<td bgcolor=FFFFFF width=50% height=18 align=center><font face=Arial color=#000000 size=2><b>Takeoffs</b></font></td>";
  16. print "<tr>";
  17.  
  18.  
  19.  
  20.  
  21. while ($row = mysql_fetch_array($result, MYSQL_BOTH)) {
  22.  
  23.  
  24.  
  25. $a= ($row[origin_id]);
  26. $l= ($row[ile]);
  27.  
  28. print "<td bgcolor=FFFFFF width=50% height=18 align=center><font face=Arial color=#000000 size=2><b>$a</b></font></td>";
  29. print "<td bgcolor=FFFFFF width=50% height=18 align=center><font face=Arial color=#000000 size=2><b>$l</b></font></td>";
  30. print "<tr>";
  31.  
  32.  
  33.  
  34. }
  35.  
  36.  
  37. php?>


Pozwólcie, że pociągnę dalej.

  1. $query = "SELECT callsign , COUNT(callsign) AS ile FROM reports GROUP BY callsign ORDER BY ile DESC LIMIT 10";


Chciałbym, żeby podało tylko takie wyniki, gdzie 'callsign' ma więcej niż 6 znaków. Reszta musi zostać. Da się?
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.08.2025 - 06:32