Como os pedidos estão vinculados às empresas via os clientes, não acho que você precise realizar duas subconsultas separadas e juntá-las; em vez disso, acho que você pode simplesmente escrever:
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
;
Editado para adicionar: Dito isso, devo dizer que o esquema realmente não faz sentido para mim. Você tem um relacionamento de muitos para muitos entre clientes e empresas — por exemplo,
John Smith é cliente da Acme Widget Company e da Intrepid Inc. — mas os pedidos são apenas uma propriedade do cliente, não da empresa. Isso significa que se um pedido pertencer a John Smith , então ele necessariamente pertence a ambos para Acme Widget Company e para Intrepid Inc. . Eu não acho que isso pode estar certo. Em vez de ter um customer_id campo, acho que orders precisa ter um companies_customers_id campo.