正しい結果が得られる次のクエリがあります。しかし、それは超遅いです。遅くするのは
AND a.id IN (SELECT id FROM st_address GROUP BY element_id)
部。クエリは、どの国からの注文数を表示する必要があります。
人は複数の住所を持つことができますが、この場合は 1 つのみが必要です。
そうしないと、注文が複数回カウントされます。多分これを達成するためのより良い方法がありますか?人か何かの明確な結合?
SELECT cou.title_en, COUNT(co.id), SUM(co.price) AS amount
FROM customer_order co
JOIN st_person p ON (co.person_id = p.id)
JOIN st_address a ON (co.person_id = a.element_id AND a.element_type_id = 1)
JOIN st_country cou ON (a.country_id = cou.id)
WHERE order_status_id != 7 AND a.id IN (SELECT id FROM st_address GROUP BY element_id)
GROUP BY cou.id