私は正しい結果を得られる次のクエリを持っています。しかし、それは非常に遅いです。 遅くするとMySQL "Distinct" join super slow
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
:
これは、完全なクエリですか?もちろん、各注文に固有のアドレスを1つだけ取得することは可能ですか? –
補助クエリからグループを削除すると、これが役に立ちます –
@Rory customer_orderは請求先住所を追跡します。しかし、それはしばしば秩序が由来する国ではない。私たちの顧客のほとんどはヨーロッパにあり、国ごとに注文しています。しかし、請求センターはしばしばどこかに集約されます。 – Remy