Stránkování: OFFSET

Obchod s tisíci her je neukazuje všechny najednou. Ukáže jich třeba dvacet na stránku a k tomu tlačítka na další stránky. V SQL se stránky dělají pomocí OFFSET (posun), který přeskočí zadaný počet řádků, než LIMIT začne počítat:

SELECT jmeno, mesto
FROM zakaznici
ORDER BY jmeno
LIMIT 5 OFFSET 5;
jmenomesto
Klára HorákováPlzeň
Kristýna FialováBrno
Lukáš ProcházkaOstrava
Martin ZemanPlzeň
Matěj NěmecPraha

To je druhá stránka zákazníků, pět na stránku: OFFSET 5 přeskočí prvních pět (od Adély Králové po Jakuba Dvořáka) a LIMIT 5 ukáže dalších pět. První stránka má OFFSET 0, což je totéž jako žádný OFFSET, a třetí stránka OFFSET 10. Obecně stránka přeskočí řádky všech stránek před ní: (číslo stránky − 1) × počet řádků na stránku.

Poslední stránka může být kratší. Obchod má 14 zákazníků, takže na třetí stránce jsou jen čtyři. A když OFFSET přeskočí všechny řádky, je výsledek prázdný: jen názvy sloupců.

Stránky potřebují řazení, které dá jedno přesné pořadí. Kdyby měly dva řádky stejnou hodnotu, mohla by databáze jeden z nich ukázat na konci první stránky a znovu na začátku druhé a jiný na žádné. Proto se stránky řadí podle něčeho, co se neopakuje, nebo se jako poslední sloupec řazení přidá třeba id.

SQLite rozumí i kratšímu zápisu LIMIT 5, 5, ale pozor: tam je první počet řádků, které se mají přeskočit, takže LIMIT 10, 5 přeskočí deset řádků a ukáže pět. To se snadno splete, a proto tento kurz píše OFFSET.

Pokyny

Dotaz v editoru ukazuje první stránku katalogu obchodu: hry seřazené podle názvu, čtyři na stránku. Změňte ho tak, aby ukázal třetí stránku:

nazevcena
Lost Temple499
Moon Farm499
Mystery Manor649
Ocean Deep399

Pod něj přidejte dotaz, který ukáže název a cenu jediné hry: druhé nejdražší.

nazevcena
Goal Rush1299

Začněte programovat zdarma

Registrací souhlasíte s provozními podmínkami a zásadami ochrany osobních údajů.

Nebo se registrujte pomocí:

7/12