Filtrování dat vztahující se pouze k části dotazu
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- jandik.n
- Člen | 41
Ahoj, mám následující dotaz, kde chci spočítat nevyúčtované částky překladatelů (accounted = 0).
<?php
$selection = $this->db->table('translator')->select('*');
$selection->select('SUM(:translator_project.payment) AS payment_to_get')->having(':translator_project.accounted = 0')->group('translator.id');
?>
Dotaz se chová tak, že mi vyfiltruje překladatele, kteří mají nějakou
práci nevyúčtovanou a překladatele, co mají veškerou práci vyúčtovanou
vyhodí pryč, což je asi logické.
Potřebuji však dotaz sestavit tak, aby se podmínka s „having accounted =
0“ vztahovala pouze k samotné SUMě.
Věděl byste někdo, jak?
Díky!
- David Matějka
- Moderator | 6445
zkus zahodit to having a pouzit neco jako
$selection->select("SUM(IF(:translator_project.accounted = 0, :translator_project.payment, 0)) AS payment_to_get")
- jandik.n
- Člen | 41
matej21 napsal(a):
zkus zahodit to having a pouzit neco jako
$selection->select("SUM(IF(:translator_project.accounted = 0, :translator_project.payment, 0)) AS payment_to_get")
Ty jo, seš dobrej, funguje přesně, jak má :-)
O takovéto konstrukci jsem neměl tušení. Jsou někde vypsané takovéto konstrukce pro Nette Database, abych věděl, jaké jsou další možnosti?
Díky moc!
Editoval jandik.n (10. 11. 2014 16:32)