Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][MySQL]Sortowanie mysql
Owghard
post 9.06.2014, 18:30:40
Post #1





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 30.05.2014

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


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
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 12)
slash^
post 9.06.2014, 18:58:31
Post #2





Grupa: Zarejestrowani
Postów: 278
Pomógł: 36
Dołączył: 9.04.2003
Skąd: Płock

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


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


Ten post edytował slash^ 9.06.2014, 19:00:01


--------------------
d(^^)b
Go to the top of the page
+Quote Post
Owghard
post 10.06.2014, 17:11:27
Post #3





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 30.05.2014

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


Dzięki. A można zrobić tak że w tym 1 wykluczy zliczanie jakiejś liczby np. 0?
Go to the top of the page
+Quote Post
snerf
post 10.06.2014, 18:12:40
Post #4





Grupa: Zarejestrowani
Postów: 74
Pomógł: 3
Dołączył: 30.03.2014

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


WHERE number > 0;

wszystkie większe niż 0
Go to the top of the page
+Quote Post
Owghard
post 10.06.2014, 18:46:40
Post #5





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 30.05.2014

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


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.
Go to the top of the page
+Quote Post
snerf
post 10.06.2014, 18:48:02
Post #6





Grupa: Zarejestrowani
Postów: 74
Pomógł: 3
Dołączył: 30.03.2014

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


Może podaj ten błąd jak coś wyświetla?
Sprawdź jak używa się WHERE w zapytaniu
Go to the top of the page
+Quote Post
Owghard
post 10.06.2014, 18:53:49
Post #7





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 30.05.2014

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


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. }


Ten post edytował Owghard 10.06.2014, 18:54:20
Go to the top of the page
+Quote Post
Turson
post 10.06.2014, 18:57:48
Post #8





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

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


Miałeś sprawdzić gdzie wstawia się WHERE
Go to the top of the page
+Quote Post
Owghard
post 10.06.2014, 19:17:15
Post #9





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 30.05.2014

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


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
Go to the top of the page
+Quote Post
Turson
post 10.06.2014, 19:18:39
Post #10





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

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


Ale tu masz jeszcze JOINa, więc po nim
Go to the top of the page
+Quote Post
Owghard
post 10.06.2014, 19:30:52
Post #11





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 30.05.2014

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


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.
Go to the top of the page
+Quote Post
Turson
post 10.06.2014, 19:36:47
Post #12





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

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


  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());
Go to the top of the page
+Quote Post
Owghard
post 11.06.2014, 16:29:48
Post #13





Grupa: Zarejestrowani
Postów: 14
Pomógł: 0
Dołączył: 30.05.2014

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


Ok, już sobie poradziłem. Do zamknięcia.

Ten post edytował Owghard 11.06.2014, 16:30:02
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 Wersja Lo-Fi Aktualny czas: 14.08.2025 - 05:03