Ako na order() pri group()
- JakubTN
- Bronze Partner | 49
Zdravim,
vedel by mi niekto poradit, ako dosiahnut vratenie dat zoradenych podla order(), ked zaroven pouzijem aj group()?
Priklad:
Mam tabulku s privatnymi spravami, pricom potrebujem vypisat skupiny sprav s jednotlivymi uzivatelmi a zaroven vzdy zobrazit aj nahlad poslednej spravy.
Ked pouzijem:
<?php
$this->context->createMessageUser()->where('webuser_id', $user->id)->order('datetime DESC')->group('adminuser_id');
?>
tak po vypisani v sablone pre kazdu skupinu sprav s danym uzivatelom dostavam len prvy zaznam, pricom by som potreboval posledny.
Existuje nejake elegantne riesenie? Dakujem.
Editoval JakubTN (30. 6. 2012 21:23)
- petr.pavel
- Člen | 535
Tohle se netýká Nette ani Nette Database – máš zmatek v tom, jak se
používá GROUP BY/ORDER BY v SQL.
ORDER BY řadí výsledné (seskupené) věty, nikoliv záznamy v rámci
skupiny. To, že dostáváš první záznam, je náhoda. Jindy bys taky mohl
dostat jiný. To je vůbec taková zvláštnost MySQL, že povoluje žádat
o hodnotu, která není jasně určena. Třeba PostgreSQL ti nepovolí
v SELECT uvést proměnnou, která není použita v agregační funkci nebo
v GROUP BY.
Výběr prvního prvku v rámci skupiny se popisuje zde, není to trivča.