Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Zapytanie posortowane wg zsumowanych pol
MalyKazio
post 19.11.2005, 13:59:22
Post #1





Grupa: Zarejestrowani
Postów: 168
Pomógł: 1
Dołączył: 19.11.2005

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


Witam.

Probuję stworzyć coś w rodzaju rankingu psów.
Mam tabele wyglądającą w skrócie tak:
Ranking
[id] [wystawa] [pies] [punkty]

W takiej tabelce sa rekordy, każdy pies ma ich sporo bo za każdą wystawę przybywa jeden.
Chodzi mi o takie cudo: Jak zrobić aby wyświetlić psy w wg zsumowanej wartosci pola punkty (malejąco) dla kazdego psa.
Bardziej obrazowo:

Mamy dwa psy, pies 1 i 2. Psy te braly udzial w dwoch wystawach, pies 1 z pierwszej ma 3 pkt a z drugiej 5 a pies drugi z pierwszej 5 a z drugiej 8. Jak zrobić by wyświetlić je tak:
nazwa psa 2 - 13 punktow
nazwa psa 1 - 8 punktow
Chodzi mi o metodę a nie o gotowy kod... kod jakoś sam napiszę. Doradźcie tylko proszę jakie środki wykorzystać, ewentualnie jakie komendy bo sam sobie poradzić nie mogę.


--------------------
"Jak Cię widzą tak Cię piszą, chyba żeś jest wielką fiszą"
Go to the top of the page
+Quote Post
Fipaj
post 19.11.2005, 16:22:57
Post #2





Grupa: Zarejestrowani
Postów: 691
Pomógł: 0
Dołączył: 19.01.2005
Skąd: Warszawa

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


O ile dobrze zrozumiałem, wystarczy po prostu:
  1. SELECT *
  2. FROM psy ORDER BY punkty

o to chodziło?


--------------------
Go to the top of the page
+Quote Post
MalyKazio
post 19.11.2005, 16:54:33
Post #3





Grupa: Zarejestrowani
Postów: 168
Pomógł: 1
Dołączył: 19.11.2005

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


Nie wystarczy bo kazdy kazda wystawa, z udzialem danego psa to osobny wiersz i tym samym za kazda wystawe sa osobne punkty. Chodzi o to zeby podsumowac punkty z kilku wierszy i sortowac wg podsumowanej juz liczby punktow.


--------------------
"Jak Cię widzą tak Cię piszą, chyba żeś jest wielką fiszą"
Go to the top of the page
+Quote Post
Fipaj
post 19.11.2005, 19:37:13
Post #4





Grupa: Zarejestrowani
Postów: 691
Pomógł: 0
Dołączył: 19.01.2005
Skąd: Warszawa

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


Aha winksmiley.jpg

No to potem ładujesz wyniku do tablicy, jeśli już taki pies wystąpił - dodajesz do $psy['pies']['punkty'] wynik; jeśli nie - tworzysz $psy[$pies]...


--------------------
Go to the top of the page
+Quote Post
hesus
post 25.11.2005, 14:31:21
Post #5





Grupa: Zarejestrowani
Postów: 55
Pomógł: 0
Dołączył: 24.03.2005

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


Bez sensu.
Zastosuj COUNT(punkty)
i konstrukcję GROUP BY
Go to the top of the page
+Quote Post
Synaps
post 25.11.2005, 14:33:49
Post #6





Grupa: Zarejestrowani
Postów: 103
Pomógł: 0
Dołączył: 1.12.2003
Skąd: Gdynia

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


  1. SELECT pies,sum(punkty)
  2. FROM psy GROUP BY pies
  3. ORDER BY 2 DESC


--------------------
MySQL said:

You have an error in your SQL syntax near ' `sygnatura` VARCHAR, NOT NULL
Go to the top of the page
+Quote Post
MalyKazio
post 6.12.2005, 10:51:25
Post #7





Grupa: Zarejestrowani
Postów: 168
Pomógł: 1
Dołączył: 19.11.2005

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


No tak, fajne zapytanie ale mam pytanie: czy nie zsumuje ono wszystkich wartosci pola punkty, dla wszystkich wierszy (czyli dla wszystkich psow)?
Chodzi mi o to:
Jest tak:
pies1 20pkt
pies2 30 pkt
pies1 10 pkt
pies3 40 pkt
pies1 40pkt
i zeby wybrac wszystkie psy czyli pies1, pies2 i pies3 i jednoczesnie zsumowac wartosci punktow, zeby wyszlo takie cos:
pies1 70pkt
pies3 40pkt
pies2 30pkt, czyli posortowac wyniki malejaco?

A moze sie myle i zapytanie podane przez Synapsa wlasnie tak zadziala, ze wybiera psa i liczy punkty wszedzie gdzie jest ten pies?

Ten post edytował MalyKazio 6.12.2005, 10:52:32


--------------------
"Jak Cię widzą tak Cię piszą, chyba żeś jest wielką fiszą"
Go to the top of the page
+Quote Post
FiDO
post 6.12.2005, 11:38:44
Post #8





Grupa: Przyjaciele php.pl
Postów: 1 717
Pomógł: 0
Dołączył: 12.06.2002
Skąd: Wolsztyn..... Studia: Zielona Góra

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


Cytat(MalyKazio @ 2005-12-06 10:51:25)
A moze sie myle i zapytanie podane przez Synapsa wlasnie tak zadziala, ze wybiera psa i liczy punkty wszedzie gdzie jest ten pies?

A moze wykazalbys odrobine inicjatywy i sprawdzil to co podaja Ci ludzie zanim cokolwiek napiszesz ?


--------------------
Brak czasu :/
Go to the top of the page
+Quote Post
MalyKazio
post 10.12.2005, 20:10:35
Post #9





Grupa: Zarejestrowani
Postów: 168
Pomógł: 1
Dołączył: 19.11.2005

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


Dziękuje za pomoc, wszystko działa jak należy. To właśnie jest to o co mi chodziło. Jednocześnie przepraszam za dopytywanie się bez sprawdzenia. To nie wynik lenistwa tylko po prostu braku regularnego dostępu do komputera gdzie mógłbym to wszystko przestestować. Dlatego tak cenne są dla mnie trafne podpowiedzi.
Jeszcze raz dziękuję.

Edycja:
Kod wyswietla mi wszystko jak należy. Rankig jest stworzony w porządku. Natrafiłem tylko na jeden problem. Jako, że to ma być ranking więc miejsca są ponumerowane. Zdarza się tak, że niektóre psiaki mają tyle samo punktów, więc powinny mieć tą samą lokatę a nie kolejną. Da się to jakoś zrobić? Kod wygląda tak:
  1. <?php
  2.  
  3. $link = mysql_connect("localhost", "root", "") or die ("Nie mo+na siŕ poŚŚczyŠ");
  4. mysql_select_db ("swieczkos") or die ("Nie mozna wybraŠ bazy danych");
  5.  
  6. $i=1;
  7. $query = "SELECT pies,sum(punkty) as punkty FROM ranking GROUP BY pies ORDER BY punkty DESC";
  8. $wynik = mysql_query($query);
  9. while ($row = mysql_fetch_assoc($wynik)) {
  10. echo "$i $row[pies] $row[punkty]<br>";
  11. $i++;
  12. }
  13. mysql_close($link);
  14.  
  15. ?>


Ten post edytował MalyKazio 10.12.2005, 22:31:21


--------------------
"Jak Cię widzą tak Cię piszą, chyba żeś jest wielką fiszą"
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: 13.06.2025 - 20:47