Ein Freund bat mich um Hilfe bei der Erstellung einer Abfrage, die zeigen würde, wie viele Teile jedes Modells an jedem Tag des Monats verkauft wurden und Nullen zeigten, wenn keine Stücke für ein bestimmtes Modell verkauft wurden an einem bestimmten Tag, auch wenn an diesem Tag keine Artikel eines Modells verkauft werden. Ich habe die unten stehende Abfrage gefunden, aber es funktioniert nicht wie erwartet. Ich bekomme nur Aufzeichnungen für die Modelle, die verkauft wurden, und ich weiß nicht warum.Linke und rechte Verbindung in einer Abfrage
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
Ich hatte die temporären Tabellen temp_months
und temp_days
geschaffen, um die Tage alle für jeden Monat zu erhalten. Ich benutze MySQL 5.1, aber ich versuche, die Abfrage ANSI-konform zu machen.
Müssen Sie nicht specifico Uter Joins tun. Ich bin nicht zu vertraut mit mysql, aber in SQL-Server, wenn Sie innere/äußere weglassen es standardmäßig auf innere. –
@dan s: LINKS und RECHTS bedeuten OUTER. – Quassnoi
Das löste mein Problem. Danke vielmals! –