友人は、各モデルの何個のピースが毎月売られたかを示すクエリを作成するのを助けてくれました。たとえその日にいかなるモデルのアイテムも販売されていなくても、特定の日。私は以下の質問を思いついたが、期待どおりに動いていない。私は販売されたモデルのレコードを取得しているだけなので、理由はわかりません。クエリの左と右の結合
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ではinner/outerを省略した場合はinnerをデフォルトにします。 –
@dan s:LEFTとRIGHTはOUTERを意味します。 – Quassnoi
これは私の問題を解決しました。どうもありがとう! –