Sčítání vybraných hodnot z tabulky
- quiced
- Člen | 85
Zdravím,
už snad týden přemýšlím nad následujícím problémem a chtěl bych se zeptat zda by mi někdo nepomohl s jeho řešením.
Mám tyto dvě tabulky.
V tabulce profittable mám nadefinováno několik řádků a podle těchto řádků bych potřeboval vyhledat záznamy v druhé tabulce a u těchto záznamů sečíst sloupec price. Znamená to, že na konci by mi mělo vzniknout tolik sum kolik je záznamů v tabulce profittable.
Zkoušel jsem všemožná řešení, která mě napadla, ale nic mi bohužel nefungovalo.
Díky za každou radu.
- quiced
- Člen | 85
Díky za nápovědu, ale bohužel bych potřeboval ještě pomoct s tím to dát do nette database. Jinak vytvořil jsem si cizí klíč mezi oběma tabulkama.
Nejsem si moc jistý skládáním podobných dotazů, ale začal jsem takto:
$this->appRepository->getProfitTypeTable()->sum(‚price.products‘)->group(‚type‘)
ale určitě tam bude někde chyba, takže kdyby mi někdo pomohl byl bych mu moc vděčný.
Díky za pomoc.
- David Matějka
- Moderator | 6445
verze nette? pro 2.0 asi takhle:
$connection
->table('profittype')
->group('profittype.type')
->select('SUM(products:price) AS price_sum, profittype.type')
- quiced
- Člen | 85
Tak nevím co dělám špatně, ale Nette mi hlásí tuto chybu: No reference found for $profittype->products. Předpokládám, že je problém s cizími klíči, ale jak je z obrázku vidět, klíč je vytvořený.
Zkoušel jsem mazat cache a aktualizoval jsem Nette na nejnovější verzi, ale nic z toho nepomohlo.
Díky za každou radu :D
- quiced
- Člen | 85
To už jsem několikrát zkoušel, ale bohužel se mi to nedaří. Když se
pokouším vytvořit cizí klíč z tabulky products na profittype, tak mi
adminer píše tuto chybu: Zdrojové a cílové sloupce musí mít stejný
datový typ, nad cílovými sloupci musí být definován index a odkazovaná
data musí existovat.
Cannot add or update a child row: a foreign key constraint fails
(bilito
.#sql-348_48
, CONSTRAINT
?sql?348_48_ibfk_1
FOREIGN KEY (type
) REFERENCES
profittype
(id
))
Když to udělám opačně, tedy z tabulky profittype na products, tak cizí klíč vytvořím bezproblému. Díky za radu :D.
- David Matějka
- Moderator | 6445
a jsou to stejny typy? nemas v products – type hodnotu, ktera neexistuje v profittype – id?
- quiced
- Člen | 85
Ještě jeden detail by mě zajímal, a to konkrétně zda se dá doplnit ten select výraz
getProfitTypeTable()->group('profittype.type')->select('SUM(products:price) AS price_sum, profittype.type')
o podmínku pro tabulku products. Konkrétně bych potřeboval vybrat produkty podle id záznamů z další tabulky receivedinvoice. Navíc bych potřeboval vybrat záznamy z receivedinvoice pod podmínkou user->id.
Bohužel mě nenapadá jak něco podobného doplnit do původního selectu. Napadlo mě propojit si opět pomocí cizích klíčů tabulku receivedinvoice a products.