![]() |
![]() |
![]()
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 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 6 807 Pomógł: 1828 Dołączył: 11.03.2014 Ostrzeżenie: (0%) ![]() ![]() |
Masz pomieszanych uczniów. Paweł i Kasia mają id=2. Albo to jest inna Kasia i powinna mieć np. id 5, albo powinna mieć id=3.
Ale jest też błąd w drugim zapytaniu. Zmień warunek na:
powinno nie być problemów. Jeśli będą problemy, to proponuję Ci wykorzystać pierwsze zapytanie (pierwsze z tych dwóch) i zwiększyć bazę z 10 na 100 lub 1000. Zmiana wykładnika tu jednak nie pomoże, ale zmiana podstawy tak. W przypadku bazy 100, jeśli Uczeń1 ma jedną 2, to Uczeń2 musiałby mieć 110 jedynek aby być wyżej, co raczej nie jest możliwe. W przypadku podstawy 1000, musiałby mieć 1100. Ten post edytował trueblue 27.11.2016, 19:21:01 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 14.10.2025 - 16:57 |