Sumarizování třech tabulek

kerim.22
Člen | 16
+
0
-

Dobrý den, už jsem v koncích, řešením jsem zabil celou noc :( mám tři tabulky a potřebuji z nich selection.
Tabulka hlavní se jmenuje customers (obsahuje id, což je obsaženo v obsatních tabulkách jako customer_id)
vypadá to takhle
id | company_name | ico | potential | ......
1 | autor s.r.o. | 123456789 | 1000000 |
2 | autor. s.r.o.| 123456789 | 50000 |
3 | další firma | 987604012 | 1204050 |

další tabulka customers_monthdata
id | customer_id | value |year
1 | 1 | 50000 |2017
2 | 2 | 60000 |2017
3 | 3 | 103202 |2017

Výsledek by měl vypadat takto:
id | ico | company_name | total_potential | total_monthdata |
1 | 123456789 | autor. s.r.o. | 1050000 | 110000 |
2 | 987604012 | další firma | 1204050 | 103202 |

Jde o to, že potřebuji projít všechny customers a z těhle dvou tabulek sestavit výslednou tabulku, která obsahuje total_potential = SUM(customers.potential) a total_monthdata = SUM (customers_monthdata.value). Největší problém jsem měl s tím, že když nakonec GROUPNU tabulku customers podle IČO (což potřebuji aby v nové tabulce byly výsledky unikátní ale sečtené za všechna stejná IČA ale rozdílná ID) SUM mi vrátí jenom poslední hodnotu v řádku. No groupne se to, ale hodnoty se nesečtou. Zkoušel jsem to i v nette, ale už mi docházejí síly. Prosím poraďte díky. asi něco už přehlížím. Zkoušel jsem toto:

<?php
$result = $this->database->query(„SELECT customers.company_name, customers.ico,
SUM(customers.potential) AS total_potential,
SUM(customers_monthdata.value) as cumulative_count
FROM customers
INNER JOIN customers_monthdata ON customers.id=customers_monthdata.customer_id
GROUP BY customers.ico“); ?>

Díky mnohokrát David

Ondřej Kubíček
Člen | 494
+
0
-

podle toho sql to máš dobře, sečte ti to potential i value podle ico, to ti musí fungovat

Ot@s
Backer | 476
+
+1
-

kerim.22 napsal(a):
<?php
$result = $this->database->query(„SELECT customers.company_name, customers.ico,
SUM(customers.potential) AS total_potential,
SUM(customers_monthdata.value) as cumulative_count
FROM customers
INNER JOIN customers_monthdata ON customers.id=customers_monthdata.customer_id
GROUP BY customers.ico“); ?>

Díky mnohokrát David

Klauzule GROUP BY musí obsahovat zbylé neagregované sloupce uvedené v SELECTu. Správně má být GROUP BY customers.company_name, customers.ico