UNION nebo GROUP WITH ROLLUP
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- MW
- Člen | 626
Prosim o radu,
pouzivam NETTE\DATABASE a ted potrebuji poslat do gridu data, se SUM sloupce na konci..
Chtel jsem pouzit UNION a nebo ROLLUP, ale ani jedno se me nedari…
Když zkusim třeba toto:
public function getData($year = null) {
return $this->database->table('vynosyo')->select('*, SUM(cena)')->group('id WITH ROLLUP');
}
nelze na to volat uz ORDER…
pokud udelam dotaz rucne přes ->query tak na nej taky uz nezavolam ani order ani where ..
Poradte prosim, jak lze toto resit..
Diky!
Editoval MW (14. 10. 2013 15:32)
- enumag
- Člen | 2118
- Uděláš normální select (bez union, bez rollup). Dostaneš Selection což je kromě jiného Iterátor.
- Pak připravíš druhý, třeba ArrayIterator kde bude jediný řádek, ten součtový (hodnotu získáš druhým selectem).
- Vytvoříš new AppendIterator a přidáš do něj oba předchozí iterátory.
- Tento AppendIterator podstrčíš gridu jako data source.
- enumag
- Člen | 2118
Myslel jsem to tak že pokud ty dotazy budou vracet stejné sloupce tak ti stačí předat tomu AppendIteratoru oba dva objekty Selection (ten druhý bude mít jen jeden řádek). Na ten ArrayIterator raději zapomeň, jen tě to zbytečně mate.
Přesně ti to nenapíšu, nepoužívám hrachův grid a poslední měsíce už ani Nette\Database.
Editoval enumag (15. 10. 2013 21:54)