다음과 같은 쿼리를 통해 올바른 결과를 얻을 수 있습니다. 그러나 그것은 천천히 슈퍼입니다. 느리게 만드는 것은MySQL의 "Distinct"Join super slow
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 테이블이 배달 또는 청구 주소를 추적하지 않습니다? 물론 각 주문과 관련된 주소를 하나만 얻을 수 있습니까? –
하위 쿼리에서 그룹을 삭제하면 도움이 될 수 있습니다. –
@Rory customer_order가 청구서 수신 주소를 추적합니다. 그러나 그것은 종종 명령이 오는 나라에서는 그렇지 않습니다. 고객의 대부분은 유럽에 있으며 국가 별 주문이 있습니다. 그러나 결제 센터는 종종 중앙 어딘가에 있습니다. – Remy