Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Sortowanie uczniów wg. ocen
Userr
post
Post #1





Grupa: Zarejestrowani
Postów: 56
Pomógł: 0
Dołączył: 27.10.2015

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


Mam taką tabelę z polami: id INT, id_ucznia INT, imie_ucznia VARCHAR, oceny INT

Jej zawartość:
1, 1, Janek, 4
2, 3, Kasia, 5
3, 3, Kasia, 4
4, 2, Paweł, 3
5, 1, Janek, 4
6, 2, Paweł, 5
7, 2, Kasia, 5
8, 1, Janek, 2
9, 4, Robert, 3
10, 3, Kasia 4
11, 4, Robert, 4
12, 4, Robert, 4

Chciałbym, żeby wyświetlić uczniów w kolejności od najlepszych, do najsłabszych ocen. Z tym, że jeżeli jacyś uczniowie mają piątki, to liczy się liczba piątek (uczeń z większą liczbą piątek będzie przed uczniem z mniejszą liczbą piątek). Jeżeli okaże się, że jacyś uczniowie mają taką samą liczbą piątek, to liczy się liczba czwórek, itd. Chciałbym więc taką kolejność:

1. Kasia – 5, 5, 4, 4
2. Paweł – 5, 3
3. Robert – 4, 4, 3
4. Janek – 4, 4, 2

Jakim zapytaniem MySQL można by to było osiągnąć? Pewnie trzeba będzie wykorzystać GROUP BY i ORDER BY?

Ten post edytował Userr 27.11.2016, 13:14:34
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Userr
post
Post #2





Grupa: Zarejestrowani
Postów: 56
Pomógł: 0
Dołączył: 27.10.2015

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


Czy byłby sens zapisać wyniki tego selecta w czymś w rodzaju "pamięci cache"?

Chodzi o to, że z czasem ta tabela z ocenami będzie miała bardzo dużo wierszy. Będę chciał zrobić np. takie rzeczy:

- wyświetlić listę uczniów posortowaną wg. najlepszych ocen (wg. tych kryteriów, które podawałem wcześniej) z danego dnia roku (każdy dzień będzie miał swoją posortowaną listę na oddzielnej podstronie)
- po kliknięciu w imię ucznia będzie pokazane, które zajął pozycję w tych dziennych listach

Tak sobie pomyślałem, że jeżeli ta tabela z ocenami z czasem będzie miała milion i więcej wierszy, to takie zapytania mogą być bardzo obciążające dla serwera? A skoro te uporządkowane listy będę tworzone tylko raz na dzień, to może lepiej byłoby gdzieś je zapisać?

Tylko jak to zrobić? Czy dobrym rozwiązaniem byłyby widoki?

Czy widoków może być dowolna liczba w bazie (zdaje się, że liczba tabel w bazie jest ograniczona, stąd moje pytanie jak to będzie z widokami, skoro po roku zrobi się ich ponad 350 - jeden widok dla jednego dnia)?

Ten post edytował Userr 29.11.2016, 14:31:15
Go to the top of the page
+Quote Post

Posty w temacie
- Userr   Sortowanie uczniów wg. ocen   27.11.2016, 13:03:31
- - trueblue   Zakładam, że jednak nie liczy się liczba wyższych ...   27.11.2016, 13:16:25
|- - Userr   Cytat(trueblue @ 27.11.2016, 13:16:25...   27.11.2016, 13:33:12
- - trueblue   Pierwsze takie: [SQL] pobierz, plaintext SELECT im...   27.11.2016, 13:52:15
- - Userr   Przetestowałem zapytanie grupując po id_ucznia (ni...   27.11.2016, 17:06:20
- - trueblue   JOIN też na id_ucznia.   27.11.2016, 18:01:06
- - Userr   Wstawiłem id_ucznia do GROUP BY w JOIN() oraz do ...   27.11.2016, 18:42:30
- - trueblue   Masz pomieszanych uczniów. Paweł i Kasia mają id=2...   27.11.2016, 18:49:48
- - Userr   Poprawiłem i póki co działa świetnie Dziękuję za ...   27.11.2016, 20:50:28
- - trueblue   Podejrzewam, że najwygodniej w CSS (lista numerowa...   27.11.2016, 21:06:36
- - mihmih   CytatAle ma wadę, bo jeśli Uczeń1 ma tylko ocenę 2...   27.11.2016, 22:18:04
- - trueblue   Masz na myśli uszeregowanie właśnie według wyniku ...   27.11.2016, 22:22:24
- - mihmih   no zgadza się, nie znałem tego założenia że sama p...   27.11.2016, 22:26:17
- - trueblue   Ja też nie Ale zakładam, że analogicznie do ...   27.11.2016, 22:29:11
- - mihmih   można też taki ciąg uzupełnić osemkami do 100 pozy...   27.11.2016, 22:38:12
- - trueblue   Cytat(mihmih @ 27.11.2016, 22:38:12 )...   27.11.2016, 22:49:49
- - Userr   Cytat(trueblue @ 27.11.2016, 21:06:36...   28.11.2016, 12:18:09
- - trueblue   Cytat(Userr @ 28.11.2016, 12:18:09 ) ...   28.11.2016, 12:24:49
- - Userr   Dostawiłem kod związany ze zmienną @numer: [SQL] ...   29.11.2016, 12:20:50
- - trueblue   Musisz owinąć wszystkie tabele w klauzuli FROM w (...   29.11.2016, 12:59:17
|- - Userr   Cytat(trueblue @ 29.11.2016, 12:59:17...   29.11.2016, 15:21:27
- - Userr   Czy byłby sens zapisać wyniki tego selecta w czymś...   29.11.2016, 14:29:18
- - viking   Mógłby pomóc na normalnym SBD ale mysql nie posiad...   29.11.2016, 14:43:50
- - trueblue   Jedna zmienna i jeden IF wystarczy gdybyś chciał m...   29.11.2016, 15:46:21


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 Aktualny czas: 14.10.2025 - 07:30