Da die Bestellungen über mit den Firmen verknüpft sind die Kunden, ich glaube nicht, dass Sie zwei separate Unterabfragen durchführen und ihnen beitreten müssen; eher, ich denke, Sie können einfach schreiben:
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
;
Hinzufügen bearbeitet: Allerdings muss ich sagen, dass das Schema für mich nicht wirklich Sinn ergibt. Sie haben eine Viele-zu-Viele-Beziehung zwischen Kunden und Unternehmen – also zum Beispiel John Smith ist ein Kunde von Acme Widget Company und von Intrepid Inc. – aber dann sind Bestellungen nur Eigentum des Kunden, nicht des Unternehmens. Dies bedeutet, dass eine Bestellung John Smith gehört , dann gehört zwangsläufig beides dazu an Acme Widget Company und an Intrepid Inc. . Ich glaube nicht, dass das stimmen kann. Statt einer customer_id Feld, ich denke orders muss eine companies_customers_id haben Feld.