2015-12-10 91 views
1

返回的所有行我有以下查詢MySQL的左連接的問題有3個表格不是從第一臺

select catid, cat_name, currency, count(is_reporting_category_sales.id) as total_sales, 
sum(total_sales) as total_earning 
from is_category 
    left join is_reporting_category_sales on is_category.catid = is_reporting_category_sales.category_id 
    join is_reporting_order on is_reporting_order.id = is_reporting_category_sales.order_id 
group by catid, cat_name, currency 
ORDER BY `is_category`.`cat_name` ASC 

但是這回只有在is_category和is_reporting_category_salesis_reporting_order是常見的行,但我想獲取所有行從is_category table。如果沒有該類別的訂單,則0total_earningtotal_sales

回答

1

,你必須使用左聯接

left join is_reporting_order on is_reporting_order.id = is_reporting_category_sales.order_id 

而不是

join is_reporting_order on is_reporting_order.id = is_reporting_category_sales.order_id 
0

也許使用左外連接,你可能會得到期望的結果(曾在一些別名BTW列的猜測所以其中一些可能是錯的)

select c.`catid`, c.`cat_name`, `currency`, count(i.`id`) as 'total_sales', sum(`total_sales`) as 'total_earning' 
from `is_category` c 
    left outer join `is_reporting_category_sales` i on c.`catid` = i.`category_id` 
    left outer join `is_reporting_order` on o.`id` = i.`order_id` 
group by c.`catid`, c.`cat_name`, `currency` 
order by c.`cat_name` asc;