我有以下查詢,它給了我正確的結果。但它超級慢。 是什麼讓它慢MySQL「獨特」加入超級慢
AND a.id IN (SELECT id FROM st_address GROUP BY element_id)
部分。查詢應該顯示我們從哪個國家獲得了多少訂單。
一個人可以有多個地址,但在這種情況下,我們只需要一個地址。
否則會導致多次計數。也許有更好的方法來實現這一目標?對某人或某事有明確的聯結?
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
是否CUSTOMER_ORDER表不能跟蹤交貨或賬單地址?當然,有可能只獲得每個訂單特定的單一地址? – 2012-04-10 12:59:06
從子查詢中刪除組可能會有所幫助 – 2012-04-10 13:09:49
@Rory customer_order確實跟蹤帳單地址。但這通常不在訂單來自的國家。我們的大部分客戶都在歐洲和每個國家的訂單。但結算中心通常集中在某個地方。 – Remy 2012-04-10 14:03:14