Eredmények rendezése – az ORDER BY kulcsszó
Szeretnél az ünnepek alatt is gyakorolni? Vár az Easter Bug Hunt játékunk! Csatlakozz, és keresd meg az összes hibát - akár még jutalom is ütheti a markod!
Irány a játékAdatok lekérdezésekor sokszor azt is meg szeretnénk szabni, hogy a lekérdezett információk milyen sorrendbe rendezve jelenjenek meg. Gondoljunk akár csak egy osztálynévsorra, amit például betűrendben szeretnénk megkapni, vagy éppen a diákok átlagára, csökkenő sorrendben.
Rendezésre mindig az ORDER BY kulcsszót használhatjuk, amit a lekérdezések végén, a lekérdezett mezők, szűrések, összesítés, stb. után kell elhelyeznünk. Amennyiben egyszerűen egy mezőnevet adunk meg az ORDER BY után, úgy az adott mező szerint növekvő sorrendbe rendezve fogjuk megkapni az adatainkat:
SELECT `iskola`, `kodjel` FROM `nevezo` ORDER BY `kodjel`
A rendezés irányát azonban manuálisan is megadhatjuk. Az ASC kulcsszó növekvő sorrendet (vagy szövegek esetén betűrendet), a DESC pedig csökkenő sorrendet (vagy szövegek esetén fordított betűrendet) jelent:
SELECT `iskola`, `kodjel` FROM `nevezo` ORDER BY `kodjel` ASC
Nevezők kódjel szerint növekvő sorrendben (kipróbálom)
SELECT `iskola`, `kodjel` FROM `nevezo` ORDER BY `kodjel` DESC
Nevezők kódjel szerint csökkenő sorrendben (kipróbálom)
Többszintű rendezés
Természetesen több szempont szerinti rendezésre is lehetőség van, ha több oszlop nevét is felsoroljuk a lekérdezés végén. Ez azt jelenti, hogy amennyiben az elsőként felsorolt mezőben szereplő adat megegyezik két vagy több rekordban, akkor azok a második, vagy ha az is egyezik, akkor a harmadik, stb. mező alapján kerülnek sorbarendezésre:
SELECT `iskola`, `kodjel`, `kategoria` FROM `nevezo` ORDER BY `kategoria`, `kodjel`
Rendezés kategória szerint növekvő, azon belül pedig kódjel szerint növekvő sorrendbe (kipróbálom)
SELECT `iskola`, `kodjel`, `kategoria` FROM `nevezo` ORDER BY `kategoria`, `kodjel` DESC
Rendezés kategória szerint növekvő, azon belül pedig kódjel szerint csökkenő sorrendbe (kipróbálom)
SELECT `iskola`, `kodjel`, `kategoria` FROM `nevezo` ORDER BY `kategoria` DESC, `kodjel` ASC
Rendezés kategória szerint csökkenő, azon belül pedig kódjel szerint növekvő sorrendbe (kipróbálom)
A rendezés a MySQL legtöbb beépített adattípusára működik, azonban körültekintőnek kell lennünk a típusok használatával, mert például szövegmezőkben tárolt számok, és egyéb nem megfelelően használt típusok esetén váratlan eredményekre juthatunk!
Próbáld ki!
Próbáld ki magad a MySQL homokozóban! Készíts néhány lekérdezést, amik rendezést igényelnek. Az alábbi feladatok mind olyan táblákra hivatkoznak, amik léteznek a homokozóban, így máris kipróbálhatod őket:
- Készíts lekérdezést, amely kilistázza a diak tábla összes diákját betűrendben (azaz nev szerint növekvő sorrendben)!
- Készíts lekérdezést, amely kilistázza a nevezo táblából az összes nevezőt iskola szerint növekvő, azon belül kódjel szerint csökkenő sorrendben!
- Készíts lekérdezést, ami kilistázza a tantargy táblából az összes tantárgyat tipus szerint, azon belül pedig név szerint növekvő sorrendben!