MM@rtinMedlem sedan dec. 19992 085 inlägg Jag har en besökslogg som ser ut såhär:
ip | besöksdag
Nu vill jag räkna ihop hur många besökare det var varje dag. Det gör jag såhär:
SELECT COUNT(*) FROM log GROUP BY DATE(besöksdag)
Det fungerar bra, problemet är att om det är någon dag som inte har några besökare så finns den inte med. Jag skulle vilja att alla datum kom med och att det stod 0 vid de datum då det inte var några besökare.
Det skulle ju självklart gå att göra om databasstrukturen eller göra ett php-script som fixar detta men jag tänkte att jag först skulle fråga om det kanske finns något smart sätt att göra detta i mysql? Allra helst utan att skapa en temporär tabell.
MM@rtinMedlem sedan dec. 19992 085 inlägg Ett sätt vore väl att joina tabellen med en temporär tabell som innehåller alla datum, kan man skapa en sådan tabell "on the fly"?
PpebiMedlem sedan jan. 2005327 inlägg
M@rtin skrev:
Ett sätt vore väl att joina tabellen med en temporär tabell som innehåller alla datum, kan man skapa en sådan tabell "on the fly"?
Ja, det är ju just det som är vitsen med temp tabeller, att skapas "on the fly" och sedan försvinna.
Jag gjorde något likande för ett tag sedan, då gjorde jag en stored procedure som tog stardatum och slutdatum som inaparmetrar. Så skapades en temptabel med alla datum mellas dessa och så gjordes en join för att få snygga 0 rader.
Då fick jag ju också en skapligt bra lösning för att kunna välja vilket intevall man vill titta på.
Men du behöver inte göra någon SP, det går fint att skapa en temp tabell direkt i anropet, du får bara inte stänga din DB connection. Då försvinner ju temp tabellen. Det är ju det som är poängen med en sån.....
/pebi