Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> MAX() i SUM() w jednym zapytaniu
TheTester
post 24.09.2010, 10:43:40
Post #1





Grupa: Zarejestrowani
Postów: 30
Pomógł: 0
Dołączył: 11.03.2009

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


Witam.

Potrzebuję małej porady odnośnie zsumowania maksymalnych wyników.
Przykład:
Tabela posiada różne wyniki różnych zagadek dla różnych użytkowników. Jeden użytkownik może mieć więcej niż jeden wynik dla tej samej zagadki.
Jak pobrać sumę najwyższych wyników ze wszystkich zagadek dla konkretnego użytkownika?

Gdybym chciał to przedstawić w postaci obrazowego kodu, to byłoby to coś w tym stylu:
  1. SELECT SUM(SELECT MAX(wynik) FROM punkty WHERE uzytkownik=1) FROM punkty WHERE uzytkownik=1
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
kreciko
post 24.09.2010, 12:29:04
Post #2





Grupa: Zarejestrowani
Postów: 99
Pomógł: 7
Dołączył: 17.02.2010

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


Robienie tego w samym sql jest jak mycie rąk w pisuarze. Można, ale jest niewygodnie. Lepiej to zrobić programowo sobie w jakimś php. Musisz użyć podzapytania(IN)

Ten post edytował kreciko 24.09.2010, 12:29:50
Go to the top of the page
+Quote Post
TheTester
post 24.09.2010, 12:47:52
Post #3





Grupa: Zarejestrowani
Postów: 30
Pomógł: 0
Dołączył: 11.03.2009

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


Wiem, że mógłbym w zrobić to w PHP, ale wtedy straciłbym możliwość m.in. sortowania...doszedłem póki co do czegoś takiego:
  1. SELECT SUM(mx) FROM (SELECT MAX(wynik) AS mx FROM punkty WHERE uzytkownik=1 GROUP BY zagadka) AS noname

I takie zapytanie zwraca poprawny wynik, ale stanowi problem dla sytuacji gdy chciałbym pobrać listę użytkowników, którzy byli najlepsi, czyli coś takiego jak:
  1. SELECT u.imie, (SELECT SUM(mx) FROM (SELECT MAX(wynik) AS mx FROM punkty WHERE uzytkownik=u.id GROUP BY zagadka) AS noname) AS maxwynik FROM punkty p, uzytkownicy u WHERE u.id=p.uzytkownik ORDER BY maxwynik DESC


Ten post edytował TheTester 24.09.2010, 12:57:23
Go to the top of the page
+Quote Post
kreciko
post 24.09.2010, 13:13:50
Post #4





Grupa: Zarejestrowani
Postów: 99
Pomógł: 7
Dołączył: 17.02.2010

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


Cytat(TheTester @ 24.09.2010, 13:47:52 ) *
Wiem, że mógłbym w zrobić to w PHP, ale wtedy straciłbym możliwość m.in. sortowania...


Jakiegoś dziwnego PHP używasz.
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 - 01:55