Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MySQL]Sortowanie mysql
Forum PHP.pl > Forum > Przedszkole
Owghard
Witam. Mam pewien problem mianowicie mam tabelę:
  1. INSERT INTO `lista` (`ID`, `death`, `kill`) VALUES
  2. (1, 1, 0),
  3. (2, 2, 0),
  4. (3, 2, 0),
  5. (4, 4, 3),
  6. (5, 4, 3),
  7. (6, 4, 3),
  8. (7, 2, 3),
  9. (8, 4, 3),
  10. (9, 4, 3),
  11. (10,4, 3),
  12. (11, 4, 3),
  13. (12, 4, 3),
  14. (13, 2, 0),
  15. (14, 5, 2),
  16. (15, 5, 0),
  17. (16, 2, 5),
  18. (17, 2, 5),
  19. (18, 2, 5),
  20. (19, 5, 2);


W 3 kolumnie mam różne cyfry, chciałbym aby były one zliczane i sortowane. Czyli po kolei mam 9x3, 3x5 oraz 2x2. I chodzi mi o wyświetlenie trzech największych czyli:
9
5
2
Mógłby mi ktoś powiedzieć jak to zrobić?
Na razie mam to.
"SELECT * FROM lista ODER BY kill DESC LIMIT 3"
Aha i jeszcze jedno, mam jeszcze tabelę:
  1. INSERT INTO `gracze` (`graczID`, `nick`) VALUES
  2. (0, 'nick1'),
  3. (2, 'nick2'),
  4. (3, 'nick3'),
  5. (5, 'nick4')


I według tego sortowania na początku pobierze i dopisze z tej tabeli nick tzn.
nick3-9
nick4-5
nick2-2
Z góry dzięki za pomoc smile.gif
slash^
Ad 1:

  1. SELECT count(`kill`) AS ile FROM `lista` GROUP BY `kill` ORDER BY ile DESC LIMIT 3


Ad 2:

  1. SELECT nick,count(`kill`) AS ile
  2. FROM `lista`
  3. LEFT JOIN gracze g ON g.graczID = `kill`
  4. GROUP BY `kill`
  5. ORDER BY ile DESC LIMIT 3
Owghard
Dzięki. A można zrobić tak że w tym 1 wykluczy zliczanie jakiejś liczby np. 0?
snerf
WHERE number > 0;

wszystkie większe niż 0
Owghard
Yyy... Nie wiem czy dobrze robię bo mi nie działa
  1. "SELECT nick,count(`kill') AS how FROM `lista` WHERE kill>0 LEFT JOIN gracze g ON g.graczID = `kill` GROUP BY `kill` ORDER BY how DESC LIMIT 3"

Bez tego where nie mam błędu.
snerf
Może podaj ten błąd jak coś wyświetla?
Sprawdź jak używa się WHERE w zapytaniu
Owghard
Warning: mysql_fetch_row() expects parameter 1 to be resource, boolean given in D:\XAMPP\htdocs\config.php on line 22

  1. $idtopkill = mysql_query("SELECT nick,count(`kill') AS how FROM `lista` WHERE kill>0 LEFT JOIN gracze g ON g.graczID = `kill` GROUP BY `kill` ORDER BY how DESC LIMIT 3");
  2.  
  3. while ($kills = mysql_fetch_row($idtopkill))
  4. {
  5. echo $kills[0];
  6. }
Turson
Miałeś sprawdzić gdzie wstawia się WHERE
Owghard
Nie rozumiem... wszędzie jest wstawiane po from. Przykład z podręcznika który czytałem:
  1. SELECT produkt, cena FROM tabela WHERE cena>2
Turson
Ale tu masz jeszcze JOINa, więc po nim
Owghard
Zrobiłem po join i nie działa. Po on też nie działa, po group też nie działa. Nie mam pojęcia o co chodzi.
Turson
  1. $idtopkill = mysql_query("SELECT nick,count(`kill') AS how FROM `lista` LEFT JOIN gracze g ON g.graczID = `kill` WHERE `kill`>0 GROUP BY `kill` ORDER BY how DESC LIMIT 3") or die(mysql_error());
Owghard
Ok, już sobie poradziłem. Do zamknięcia.
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.