| P.E. Nikolajsen skrev:
 
 > måned el uge - antal indmeldte - antal udmeldte - evt en saldo
 >
 > Det eneste jeg kan finde på er noget med at opbygge en
 > temporer tabel med følgende struktur:
 >
 > dato, ind (0 el 1), ud (0 el 1)
 
 Det skulle ikke være nødvendigt med en temp-tabel. Det er simpelt
 nok at tage indmeldte eller udmeldte for sig:
 
 SELECT Year(indmeldt) as Aar, Month(indmeldt) As Maaned,
 COUNT(*) AS AntalIndmeldte
 FROM tabel
 GROUP BY Aar, Maaned
 
 SELECT Year(udmeldt) as Aar, Month(udmeldt) As Maaned,
 COUNT(*) AS AntalUdmeldte
 FROM tabel
 GROUP BY Aar, Maaned
 
 For at lægge dem sammen i et enkelt postsæt, kan man i princippet
 benytte et FULL OUTER JOIN - men det understøtter MySQL vist ikke.
 I stedet kan følgende være en mulighed:
 
 SELECT d.*, i.antalIndmeldte, u.AntalUdmeldte
 FROM
 (
 SELECT Year(indmeldt) as Aar, Month(indmeldt) As Maaned,
 FROM tabel
 UNION
 SELECT Year(udmeldt) as Aar, Month(udmeldt) As Maaned,
 FROM tabel
 ) d
 LEFT JOIN
 (
 SELECT Year(indmeldt) as Aar, Month(indmeldt) As Maaned,
 COUNT(*) AS AntalIndmeldte
 FROM tabel
 GROUP BY Aar, Maaned
 ) i
 ON d.Aar = i.Aar AND d.Maaned = i.Maaned
 LEFT JOIN
 (
 SELECT Year(udmeldt) as Aar, Month(udmeldt) As Maaned,
 COUNT(*) AS AntalUdmeldte
 FROM tabel
 GROUP BY Aar, Maaned
 ) u
 ON d.Aar = u.Aar AND d.Maaned = u.Maaned
 
 ORDER BY d.Aar, d.Maaned
 
 
 Jeg ved ikke hvad du mener med saldo, men hvis det differencen
 mellem ind- og udmeldte, er det bare at tilføje beregningen i
 selectlisten:
 
 SELECT d.*, i.antalIndmeldte, u.AntalUdmeldte,
 i.antalIndmeldte - u.antalUdmeldte AS medlemstilgang
 
 Der skal nok også laves en konvertering af NULL => 0 i beregningen.
 I MSSQL kan det gøres med ISNULL(feltnavn, 0) - jeg ved ikke hvad
 man gør i Mysql.
 
 
 Ovenstående viser kun måneder/år hvor der er indmeldt eller udmeldt
 mindst én person. Hvis tomme måneder også skal med, skal man lave
 en select der udvælger alle de ønskede datoværdier, og benytte den
 som basistabellen for LEFT JOIN.
 --
 Bolig søges. Andel eller leje i Emdrup, Nordvest, Nørrebro, Søborg
 eller Brønshøj, max 6000 pr. måned.
 Kontakt pr. mail - nospam(at)gyros.dk
 Jens Gyldenkærne Clausen
 
 
 |