Da ordrerne er knyttet til virksomhederne via kunderne, jeg tror ikke, du behøver at udføre to separate underforespørgsler og slutte dig til dem; jeg tror snarere, at du bare kan skrive:
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
;
Redigeret for at tilføje: Når det er sagt, må jeg sige, at skemaet ikke rigtig giver mening for mig. Du har et mange-til-mange forhold mellem kunder og virksomheder — så f.eks. John Smith er kunde hos Acme Widget Company og af Intrepid Inc. - men så er ordrer kun kundens ejendom, ikke af virksomheden. Det betyder, at hvis en ordre tilhører John Smith , så hører det nødvendigvis til begge til Acme Widget Company og til Intrepid Inc. . Det tror jeg ikke kan være rigtigt. I stedet for at have et customer_id felt, tror jeg orders skal have et companies_customers_id felt.