Protože jsou objednávky propojeny se společnostmi přes zákazníci, nemyslím si, že musíte provádět dva samostatné dílčí dotazy a spojovat je; spíše si myslím, že můžete napsat:
SELECT companies.company AS "Company",
IFNULL(COUNT(DISTINCT companies_customers.customer_id), 0) AS "Total Customers",
IFNULL(SUM(orders.amount), 0) AS "All Orders Total"
FROM companies
LEFT
JOIN companies_customers
ON companies_customers.company_id = companies.id
LEFT
JOIN orders
ON orders.customer_id = companies_customers.customer_id
GROUP
BY companies.id
;
Upraveno za účelem přidání: To znamená, že musím říci, že schéma pro mě opravdu nedává smysl. Mezi zákazníky a společnostmi máte mnohostranný vztah – takže například John Smith je zákazníkem Acme Widget Company a společnosti Intrepid Inc. — ale pak jsou objednávky pouze vlastnictvím zákazníka, ne společnosti. To znamená, že pokud objednávka patří John Smith , pak nutně patří obě na Acme Widget Company a na Intrepid Inc. . Myslím, že to nemůže být správné. Namísto customer_id pole, myslím, že orders musí mít companies_customers_id pole.