Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP][SQL] Podzapytanie SQL, Podzapytanie SQL
karolusgt
post 7.04.2009, 13:51:54
Post #1





Grupa: Zarejestrowani
Postów: 20
Pomógł: 0
Dołączył: 24.08.2008

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


Witam.
Mój problem polega na tym iż nie wiem jak skonstruować zapytanie do bazy danych. Mam bowiem tabelkę z polami id, name, score, time, date. Score to wynik testu w % a time to czas rozwiązywania tego testu w s. Jestem w stanie wyświetlić zawartość tabelki (wq score) od max do min. i nie jest to chyba wielką sztuką. Tu jednak pojawia się problem, ponieważ wyniki często się powtarzają (score) natomiast czas rozwiązywania testów jest różny. Dlatego też trzeba posortować tym razem od min do max wg czasu rozwiązywania testu.
Krótko mówiąc chodzi o to żeby tak skonstruować zapytanie, aby wyświetlić ranking osób, które uzyskały max wynik ( i dodatkowo w jak najkrótszym czasie).
Z góry dziękuję za pomoc smile.gif

Ten post edytował karolusgt 7.04.2009, 13:52:47
Go to the top of the page
+Quote Post
wookieb
post 7.04.2009, 13:53:31
Post #2





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




  1. ORDER BY wynik DESC, time


Ten post edytował wookieb 7.04.2009, 13:53:40


--------------------
Go to the top of the page
+Quote Post
karolusgt
post 7.04.2009, 15:40:24
Post #3





Grupa: Zarejestrowani
Postów: 20
Pomógł: 0
Dołączył: 24.08.2008

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


Chyba nie do końca o to mi chodziło!!!
Sęk w tym że wynik ma być wyświetlany od max do min i dla poszczególnych wyników dodatkowo sortowany wg czasu (od min do max) czyli odwrotnie jak to miało miejsce w przypadku wyniku.
np:
name: score: time:
x 60% 12s
x1 50% 23s
x2 50% 45s
x3 50% 46s

....

Ten post edytował karolusgt 7.04.2009, 15:40:44
Go to the top of the page
+Quote Post
wookieb
post 7.04.2009, 15:45:33
Post #4





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




No a przeciez taki order BY jaki ci dałem tak sortuje
Najpierw sortuje wynik od nawiekszego do najmniejszego. A nastepnie jezeli jakis wyniki beda takie same to posortuje je według czasu.
Czyli jednym słowem "Czy sprawdziłeś jak to działa?"
Jak tak to pokaż zapytanie i przykładowe wyniki jakie otrzymujesz.

P.s. Po time Możesz dodać jeszcze ASC

Ten post edytował wookieb 7.04.2009, 15:50:19


--------------------
Go to the top of the page
+Quote Post
karolusgt
post 7.04.2009, 15:52:18
Post #5





Grupa: Zarejestrowani
Postów: 20
Pomógł: 0
Dołączył: 24.08.2008

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


score ma byc DESC, time ma być ASC dla poszczególnych wyników. Wyniki mają być malejąco i dla poszczególbych wyników czas ma być rosnąco. Dodałem ASC ale nie działa SQL wyrzuca błąd w zapytaniu sad.gif

Ten post edytował karolusgt 7.04.2009, 15:54:22
Go to the top of the page
+Quote Post
wookieb
post 7.04.2009, 15:57:35
Post #6





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




Pokaż zapytanie.
Wiem o co ci chodzi, jednakże teraz któryś z parametrów musi być ważniejszy (dlatego takie ułożenie w order by) i jeżeli zastosowałeś tak zapytanie jak podałem to dostałeś rekordy w takiej kolejności jak dałeś w przykładzie.

A jeżeli masz rekordy takie:
score;time
60; 11
50; 10

To jak je chcesz ułożyć?

Ten post edytował wookieb 7.04.2009, 15:57:46


--------------------
Go to the top of the page
+Quote Post
karolusgt
post 7.04.2009, 16:03:31
Post #7





Grupa: Zarejestrowani
Postów: 20
Pomógł: 0
Dołączył: 24.08.2008

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


Mam takie zapytanie:
$query1 = "SELECT * from network_easy order by score DESC, time ASC";
Wynik jest następujący:

Nick Wynik(%) Czas(s)
kg 50 15
kg 40 13
kg 40 13
kg 30 11
kg 30 11
kg 20 11
kg 20 11
kfre 10 10
kg 10 13
jh 10 5
kg 0 12
kg 0 2
utr 0 3
kg 0 4


Przy 10% widać że osoba która zrobiła test w 13sekund jest lepsza niz osoba która zrobiła to samo w 5 sekund. Jak widać sortuje wyniki dobrze, jednak nie sortuje poszczególnych wyników wq czasu rozwiązania. Nie wiem jak to przeskoczyć sad.gif
PS: Sorki jeśli trochę mało czytelne

Ten post edytował karolusgt 7.04.2009, 16:08:16
Go to the top of the page
+Quote Post
nospor
post 7.04.2009, 16:06:49
Post #8





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




a pole "czas" w bazie to ty trzymasz jako tekst czy jako liczba? Bo mam nieodparte wrazenie ze jako tekst....


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
karolusgt
post 7.04.2009, 16:11:48
Post #9





Grupa: Zarejestrowani
Postów: 20
Pomógł: 0
Dołączył: 24.08.2008

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


Heh... faktycznie był VARCHAR. Z góry dzięki za pomoc i sorki że marudziłem smile.gif
Zapraszam na Piwo do Olsztyna.
snitch.gif
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:28