Jak rozumně seskupovat výsledky ze Selection?
- bzamecnik
- Člen | 5
Ahoj, mám SQL dotaz v Selection, který předávám z presenteru do view. Zde se řádky výsledku zobrazí do tabulky. Rád bych řádky rozdělil podle hodnoty jednoho sloupce (např. foo) do několika skupin (řazených jinak než lexikografické pořadí hodnot foo). Buď mohu použít tolik dotazů, kolik je skupin (hodnot foo), nebo v presenteru získat seznam řádků výsledku jednihého dotazu s řazením podle hodnoty foo, ty ručně rozhodit do několika seznamů v hashmapě, do view poslat seznamy ActiveRow místo Selection a tam už si doladit pořadí skupin. Měl byste někdo tip na nějaké vhodnější řešení? Věřím, že nejsem první, kdo tohle řeší. Díky moc!
- duke
- Člen | 650
Můžeš si zkonstruovat takový SQL dotaz, který ti to setřídí, jak
potřebuješ. Třídit nemusíš jen přímo lexikograficky podle foo, ale
např. přes related tabulku (přes join). v Nette\Database
je
to takto:
$selection = $db->table('articles')->order('articlegroups.rank, articles.title');
- duke
- Člen | 650
Tak ono v podstatě máš jen ty 2 možnosti, které jsi sám uvedl. Buď si to rozdělíš už tím rozdělením dotazů nebo si výsledek dotazu rozdělíš až následně v php. Co je lepší záleží na dalších detailech, jako je např. způsob, jak řešíš stránkování. Pokud ho řešíš celkově, je lepší 1 dotaz, pokud ho řešíš pro každou skupinu zvlášť, je lepší víc dotazů.
- marek.dusek
- Člen | 99
Jakou by melo vyhodu pouzit vice dilcich dotazu?
- kazdy dotaz ma rezii (pripojeni, vyhodnoceni, provedeni)
- neni snadne provadet operace „napric“ – strankovat, sortovat, omezovat apod.