Ich habe die folgende Abfrage, die mir die richtigen Ergebnisse gibt. Aber es ist super langsam. Was es langsam macht, ist dieMySQL "Distinct" beitreten super langsam
AND a.id IN (SELECT id FROM st_address GROUP BY element_id)
Teil. Die Abfrage sollte zeigen, aus welchen Ländern wir wie viele Bestellungen erhalten.
Eine Person kann mehrere Adressen haben, aber in diesem Fall wollen wir nur eine.
Ursache andernfalls wird die Bestellung mehrmals gezählt. Vielleicht gibt es einen besseren Weg, dies zu erreichen? Ein eindeutiger Beitritt zur Person oder etwas?
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
Ist die customer_order Tabelle, die die Liefer- oder Rechnungsadresse nicht verfolgen? Sicherlich ist es möglich, nur eine einzige Adresse für jede Bestellung zu bekommen? –
Entfernen Sie die Gruppe, indem Sie von der Unterabfrage aus dies beheben –
@Rory Der Kunde_Antrag verfolgt die Rechnungsadresse. Aber das ist oft nicht in dem Land, aus dem die Bestellung stammt. Die meisten unserer Kunden sind in Europa und die Bestellung pro Land. Aber das Rechnungszentrum ist oft irgendwo zentralisiert. – Remy