我有這個查詢,有三個表(發票,customer_addresses,國家),我想返回每個國家的銷售數量,有些國家沒有銷售,所以我想返回零作爲sales_count以外的其他排除它們從結果。如何使用計數函數連接三個表以返回零結果?
SELECT c.name,c.iso_code,c.id as country_id, COUNT(*) as sales_count ,SUM(a.total_due) as gross
FROM `invoices` a
JOIN `customer_addresses` b
ON b.`customer_id` = a.`customer_id`
JOIN `countries` c
ON c.`id` = b.`country_id`
WHERE a.`status` = 'Paid' AND a.`deleted` ='No'
GROUP BY c.name
樣本數據:
發票
id | total_due | customer_id
1 | 25 | 5
2 | 45 | 7
customer_addresses
id | address | customer_id | country_id
5 | some address | 1 | 3
7 | some address | 2 | 4
個國家
id | name | iso_code
3 | USA | US
4 | United Kingdom | UK
5 | France | Fr
在詢問sql查詢問題時,包含示例數據和所需結果總是明智的。是否應該將在多個國家有地址的客戶的銷售計入每個國家? – wvdz 2015-02-08 21:00:32
@popovitsj我添加了示例數據,因爲您可以在「customer_addresses」表中看到「France」沒有引用,所以我的查詢沒有返回結果,我也想包括法國,用sales_count = 0 – 2015-02-08 21:09:30