한 친구가 특정 모델에 대해 판매 된 피스가 없을 때 각 달에 각 모델의 개수가 판매 된 것을 보여주는 쿼리 작성에 대한 도움을 요청했습니다. 그날 어떤 모델의 물건도 팔리지 않은 경우에도 특정 날. 아래 쿼리를 생각해 냈지만 예상대로 작동하지 않습니다. 나는 판매 된 모델에 대해서만 기록을 남기고 있는데 왜 그런지 모르겠습니다.쿼리에 왼쪽 및 오른쪽으로 합치기
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 서버에서는 inner/outer를 생략하면 inner로 기본 설정된다. –
@dan s : LEFT 및 RIGHT는 OUTER을 의미합니다. – Quassnoi
내 문제가 해결되었습니다. 고마워요! –