Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> 10 największych rekordów mysql
szczawik
post
Post #1





Grupa: Zarejestrowani
Postów: 52
Pomógł: 0
Dołączył: 19.08.2010

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


Witam, w jaki sposób można wyciągnąć z bazy MySQL 10 rekordów, które mają największą wartość w polu np. liczba?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 15)
konrados
post
Post #2





Grupa: Zarejestrowani
Postów: 623
Pomógł: 79
Dołączył: 16.01.2008

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


Select max
http://www.plus2net.com/sql_tutorial/sql_max.php
Go to the top of the page
+Quote Post
markonix
post
Post #3





Grupa: Zarejestrowani
Postów: 2 707
Pomógł: 290
Dołączył: 16.12.2008
Skąd: Śląsk

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


Kod
ORDER BY `nazwa_kolumny` DESC LIMIT 10
Go to the top of the page
+Quote Post
modern-web
post
Post #4





Grupa: Zarejestrowani
Postów: 763
Pomógł: 117
Dołączył: 15.03.2010
Skąd: void

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


Źle... Gdy nie będzie wcale rekordów spełniających dany warunek/i wywali błąd (stosując metodę kolegi wyżej).

Lepiej zrób tak (IMG:style_emoticons/default/smile.gif)

  1. $query = mysql_query("SELECT * FROM `xxx` WHERE `x` = `x` ORDER BY `x` DESC LIMIT 0,10");


Pozdrawiam (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
Crozin
post
Post #5





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


@modern-web: jaki niby błąd miałoby wywalić? Poza tym `x = x` zostanie usunięte pewnie przez optymalizator jeżeli kolumna X nie może być NULL. Co więcej jeżeli może, to dojdzie do błędów w zwracanych rekordach ponieważ NULL nie jest równy NULLowi czyli rekord nie zostanie zwrócony.
Go to the top of the page
+Quote Post
modern-web
post
Post #6





Grupa: Zarejestrowani
Postów: 763
Pomógł: 117
Dołączył: 15.03.2010
Skąd: void

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


Co do błędu; masz rację.
Ale to było jedynie przykładowe zapytanie, więc nie wszystko co jest w nim zawarte musi być użyte w tym wypadku.
Go to the top of the page
+Quote Post
szczawik
post
Post #7





Grupa: Zarejestrowani
Postów: 52
Pomógł: 0
Dołączył: 19.08.2010

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


Nie wychodzi mi... nie wyświetla od największego rekordu do najmniejszego, tylko pomieszanie...
Go to the top of the page
+Quote Post
gargamel
post
Post #8





Grupa: Zarejestrowani
Postów: 278
Pomógł: 35
Dołączył: 25.06.2010

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


Wklej zapytanie jakiego używasz
Go to the top of the page
+Quote Post
modern-web
post
Post #9





Grupa: Zarejestrowani
Postów: 763
Pomógł: 117
Dołączył: 15.03.2010
Skąd: void

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


ORDER BY RAND() byłoby losowe...
ORDER BY x ASC - rosnąco
ORDER BY x DESC - malejąco

Wydaje mi się, że Twój błąd leży w umiejscowieniu '/`/" w zapytaniu (IMG:style_emoticons/default/smile.gif)
Pokaż go, a rozwiążemy problem.
Go to the top of the page
+Quote Post
szczawik
post
Post #10





Grupa: Zarejestrowani
Postów: 52
Pomógł: 0
Dołączył: 19.08.2010

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


  1. <?php
  2. $polaczenie = mysql_connect('x', 'x', 'x') or die("Brak połączenia: " . mysql_error());
  3. $baza = mysql_select_db('x',$polaczenie) or exit("Nie wybrano bazy, błąd: " . mysql_error());
  4. $zapytanie = "SELECT * FROM czatgg_base ORDER BY wyraz DESC LIMIT 0,10";
  5. $wynik = mysql_query($zapytanie,$polaczenie) or die(mysql_error());
  6. while ($rekord = mysql_fetch_assoc($wynik)) {
  7. echo $rekord['name']. " [" . $rekord['wyraz'] . "]<br />";
  8. }
  9. ?>
Go to the top of the page
+Quote Post
gargamel
post
Post #11





Grupa: Zarejestrowani
Postów: 278
Pomógł: 35
Dołączył: 25.06.2010

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


Spróbuj
  1. <?php
  2. $polaczenie = mysql_connect('x', 'x', 'x') or die("Brak połączenia: " . mysql_error());
  3. $baza = mysql_select_db('x',$polaczenie) or exit("Nie wybrano bazy, błąd: " . mysql_error());
  4. $zapytanie = "SELECT * FROM czatgg_base ORDER BY wyraz DESC LIMIT 0,10;";
  5. $wynik = mysql_query($zapytanie) or die(mysql_error());
  6. while ($rekord = mysql_fetch_assoc($wynik)) {
  7. echo $rekord['name']. " [" . $rekord['wyraz'] . "]<br />";
  8. }
  9. ?>
Go to the top of the page
+Quote Post
modern-web
post
Post #12





Grupa: Zarejestrowani
Postów: 763
Pomógł: 117
Dołączył: 15.03.2010
Skąd: void

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


  1. $zapytanie = "SELECT * FROM czatgg_base ORDER BY wyraz DESC LIMIT 0,10;";


Po 1: Powinno być bez ; po 0,10 ... (to odnośnie kodu gargamela)
Po 2: Po co przypisujesz zapytanie do zmiennej, a dopiero potem wykorzystujesz je... Bez sensu. Lepiej zrób tak:

  1. $wynik = mysql_query("SELECT * FROM czatgg_base ORDER BY wyraz DESC LIMIT 0,10") or die(mysql_error());


Po 3: Już połączyłeś się z bazą, więc po co dajesz je w $wynik ?

Powinno działać. Narazie żadnych innych błędów nie wyłapałem (IMG:style_emoticons/default/smile.gif)

Pozdrawiam!

Ten post edytował modern-web 27.11.2010, 22:02:46
Go to the top of the page
+Quote Post
Crozin
post
Post #13





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

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


Cytat
Po 1: Powinno być bez ; po 0,10 ... (to odnośnie kodu gargamela)
Bo każde zapytanie kończy się średnikiem? Tak, można to pominąć w masie sterowników dla baz danych, ale raczej dobrą praktyką jest ich stosowanie.
Cytat
Po 2: Po co przypisujesz zapytanie do zmiennej, a dopiero potem wykorzystujesz je... Bez sensu. Lepiej zrób tak:
Bo to nic nie kosztuje, a może być wygodne przy szerokopojętym debugowaniu? Pomijając fakt beznadziejności funkcji mysql_*()
Cytat
Po 3: Już połączyłeś się z bazą, więc po co dajesz je w $wynik ?
W przypadku jednego połączenia z bazą nie jest to konieczne - ale nic nie stoi na przeszkodzie by to jawnie przekazywać.
Go to the top of the page
+Quote Post
szczawik
post
Post #14





Grupa: Zarejestrowani
Postów: 52
Pomógł: 0
Dołączył: 19.08.2010

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


[99]
[99]
[9804]
[965]
[96]
itd.

w taki sposób wyświetliło, a chciałbym żeby rosnąco posortowało, tylko 10 największych:)
Go to the top of the page
+Quote Post
gargamel
post
Post #15





Grupa: Zarejestrowani
Postów: 278
Pomógł: 35
Dołączył: 25.06.2010

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


Zmień format kolumny 'wyraz' na INT

Ten post edytował gargamel 28.11.2010, 12:32:01
Go to the top of the page
+Quote Post
szczawik
post
Post #16





Grupa: Zarejestrowani
Postów: 52
Pomógł: 0
Dołączył: 19.08.2010

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


Działa, dziękuje wszystkim (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 24.08.2025 - 20:01