一位朋友詢問我如何構建一個查詢,以顯示每個月份每天銷售的每個型號有多少個零件,如果沒有銷售某個特定型號的零件,則顯示爲零特定的一天,即使當天沒有銷售任何型號的產品。我想出了下面的查詢,但它沒有按預期工作。我只獲得已售出機型的記錄,但我不知道爲什麼。左側和右側加入查詢
select days_of_months.`Date`,
m.NAME as "Model",
count(t.ID) as "Count"
from MODEL m
left join APPLIANCE_UNIT a on (m.ID = a.MODEL_FK and a.NUMBER_OF_UNITS > 0)
left join NEW_TICKET t on (a.NEW_TICKET_FK = t.ID and t.TYPE = 'SALES'
and t.SALES_ORDER_FK is not null)
right join (select date(concat(2009,'-',temp_months.id,'-',temp_days.id)) as "Date"
from temp_months
inner join temp_days on temp_days.id <= temp_months.last_day
where temp_months.id = 3 -- March
) days_of_months on date(t.CREATION_DATE_TIME) =
date(days_of_months.`Date`)
group by days_of_months.`Date`,
m.ID, m.NAME
我創建臨時表temp_months
和temp_days
爲了得到所有天的任何一個月。我正在使用MySQL 5.1,但我試圖使查詢符合ANSI。
你不需要做指定子宮連接。 我不太熟悉mysql,但在sql server中,如果你忽略內部/外部,它默認爲內部。 – 2009-07-01 13:47:51
@丹s:左和右意味着外。 – Quassnoi 2009-07-01 13:48:59