Stránkování a řazení tabulky

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
awarus
Člen | 7
+
0
-

Zdravím,

snažím se navrhnout stránkování tabulky za pomoci Paginatoru (který jsem již úspěšně zprovoznil) a následné seřazení dat na dané stránce tabulky. K získání dat používám tento dotaz:

<?php
$this->database->table(self::TABLE_NAME)->limit($limit, $offset)->order($order);
?>

Ovšem takto jsou data nejdříve seřazena.
Rád bych věděl, jestli je možné získat nejdříve určitý rozsah dat z tabulky a ten až poté seřadit.

Předem díky za odpověď.

S pozdravem

Awarus

Šaman
Člen | 2668
+
0
-

Jak to myslíš? Bez seřazení jsou data v relační databázi (teoreticky) v náhodném pořadí, takže nemá smysl jich vzít určitý počet a ten pak řadit. Když používáš LIMIT, měl bys teoreticky vždy použít o ORDER BY, protože pravidla relační databáze ti nezaručí, že při dalším dotazu (další stránka) tam budou opravdu „následující“ záznamy.
Prakticky se sice záznamy dohledávají podle stejného algoritmu, takže ta opakovatelnost výsledků tam je, ale není to záměr, je to spíš vedlejší efekt. Matematická relace z definice nemá žádné pořadí záznamů.

Ale klidně si to seřaď podle ID, limituj a výsledek si pak seřaď už jako pole.

Editoval Šaman (4. 4. 2018 14:18)

awarus
Člen | 7
+
0
-

Díky za odpověď a vysvětlení. Nějak mě nenapadlo pracovat se získaným výsledkem jako s polem.