Výpočet hodnoty z více záznamů tabulky – lze v nette\database?
- jandik.n
- Člen | 41
Ahoj, chtěl bych zde poprosit o radu.
Mám tabulku project, kde je atribut price (celková částka za zakázku).
Pak mám tabulku worker_project, která mimo jiné obsahuje atribut payment
(odměna pracovníka u daného projektu).
Můj dotaz zní, jak mohu získat zisk daného projektu (= project price –
SUMA všech worker_project payment)? Jde mi o konkrétní kód, protože nemám
vůbec představu, jestli to jde zapsat v Nette\Database, který používám
nebo jestli zde už musím sáhnout na klasické query.
Projekty pak v Template vypisuji v klasické konstrukci foreach a potřebuji, aby atribut zisk (income) byl jedním z atributů objektu project, který zatím získávám klasickým $this->db->table(‚project‘);
Takových případů mám více a na tom jsem se teď zasekl.
Díky za rady, pokud na to jdu ze špatného konce, prosím o nakopnutí, díky!
- David Matějka
- Moderator | 6445
Mohlo by fungovat neco jako:
$this->db->table('project')
->select('project.price - SUM(:worker_project.payment) AS profit')
->group('project.id')
->fetch()->profit;
- jandik.n
- Člen | 41
Narazil jsem ještě na jednu věc, jestli můžu poprosit o radu.
Mám tedy následující dotaz:
<?php
$this->db->table('project')
->select('*')->where('status <= ?', 4)->order('status')->order('deadline')
->select('project.price - SUM(:translator_project.payment) AS profit')->group('project.id');
?>
Jak do daného dotazu mohu zakomponovat podmínku WHERE, která se vztahuje pouze k :translator_project.payment? Např. kdybych chtěl počítat pouze :translator_project.payment větší než 1000 Kč?
Díky!
- jandik.n
- Člen | 41
Chci napsat podmínku pro součet částky, která překladatelům nebyla vyúčtována, tj. SUMA payment, u které accounted = 0.
Když udělám toto:
<?php
$selection = $this->db->table('translator')->select('*')->where('active', 1)->order('surname');
$selection->select('SUM(:translator_project.payment) AS payment_to_get')->where(':translator_project.accounted = 0')->group('translator.id');
?>
tak mi to načte pouze překladatele, kteří nemají nějakou částku vyúčtovanou. Vztahuje se to tedy k celému překladateli, já to potřebuji vztáhnout pouze k té SUMĚ.
Díky za radu!