Runar0 Skrevet 3. mars 2007 Del Skrevet 3. mars 2007 (endret) Hei, Jobber med eit program som holder telling på antal renders og unike besøk. Holder på å lagen en sql spørring som skal hente ut stattestikker fra kver måned mellom to tidspunkt. Kom from til følgende spørring: SELECT SUM(hit_renders) as sumrenders, MIN(hit_renders) as minrenders, MAX(hit_renders) as maxreders, AVG(hit_renders) as avgrenders,SUM(hit_uhits) as sumuhits, MIN(hit_uhits) as minuhits, MAX(hit_uhits) as maxuhits, AVG(hit_uhits) as avguhits, hit_month as month, hit_year as year FROM sh_stats_data WHERE hit_month>=01 AND hit_year>=2005 AND hit_month<=03 AND hit_year<=2005 GROUP BY hit_year, hit_month Og denne fungere top, men problemene kommer når eg vi ha infoen mellom 1 Januar 2005 og 1 Mars 2006: SELECT SUM(hit_renders) as sumrenders, MIN(hit_renders) as minrenders, MAX(hit_renders) as maxreders, AVG(hit_renders) as avgrenders,SUM(hit_uhits) as sumuhits, MIN(hit_uhits) as minuhits, MAX(hit_uhits) as maxuhits, AVG(hit_uhits) as avguhits, hit_month as month, hit_year as year FROM sh_stats_data WHERE hit_month>=01 AND hit_year>=2005 AND hit_month<=03 AND hit_year<=2006 GROUP BY hit_year, hit_month No returneren den dei tre første månene i 2005 og så dei tre første i 2006. Og når eg ser på spørringen så er dette ganske logisk. Men eg klarer ikkje å løse dette. Noen som har eit par tips ? Takk, Runar Edit: Slik ser databasen ut: CREATE TABLE `sh_stats_data` ( `hit_day` int(11) NOT NULL, `hit_month` int(11) NOT NULL, `hit_week` int(11) NOT NULL, `hit_year` int(11) NOT NULL, `hit_renders` int(11) NOT NULL, `hit_uhits` int(11) NOT NULL ) Endret 3. mars 2007 av Shadows0 Lenke til kommentar
espen_b Skrevet 3. mars 2007 Del Skrevet 3. mars 2007 Hei Regner med at du må slå sammen feltene. Ettersom det er int kan man ikke bruke pluss. Har dessverre ikke mulighet til å sjekke noen koder nå. Kanskje dette går: (hit_year & hit_month>='200501' ) and (hit_year & hit_month<='200603') Hvis ikke det går må man gjøre feltene om til tekst verdier for så å legge dem sammen. Håper du får det til. Hilsen Espen Lenke til kommentar
tZar Skrevet 3. mars 2007 Del Skrevet 3. mars 2007 (endret) hva med (hit_month>=01 and hit_month<=03 and hit_year=2006) or (hit_year=2005) Edit: Hvorfor lagrer du ned måned og år i hver sine felter? Det enkleste ville ha vært å hatt et dato felt for når hit'et ble registrert, da kunne du tatt "where dato>='2005-01-01' and dato < '2006-04-01' Endret 3. mars 2007 av tZar Lenke til kommentar
Runar0 Skrevet 3. mars 2007 Forfatter Del Skrevet 3. mars 2007 (hit_year & hit_month>='200501' ) and (hit_year & hit_month<='200603') 8070095[/snapback] Takk skal prøve det no Edit: Hvorfor lagrer du ned måned og år i hver sine felter? Det enkleste ville ha vært å hatt et dato felt for når hit'et ble registrert, da kunne du tatt "where dato>='2005-01-01' and dato < '2006-04-01' 8070131[/snapback] Det lagrest i forskellige felter fordi eg trenger muligheten til å gruppere etter uke eller måneder. Lenke til kommentar
tZar Skrevet 3. mars 2007 Del Skrevet 3. mars 2007 (endret) Det lagrest i forskellige felter fordi eg trenger muligheten til å gruppere etter uke eller måneder. 8070288[/snapback] Det kan du gjøre uten å måtte ha det i forskjellige felter, litt avhengig av databasemotor selvsagt. Edit: I MySQL feks, group by year(dato), month(dato) Du kan vel sikkert gjøre tilsvarende med datepart i mssql hvis det er den du bruker Endret 3. mars 2007 av tZar Lenke til kommentar
Runar0 Skrevet 3. mars 2007 Forfatter Del Skrevet 3. mars 2007 aha det var eg ikkje klar over. Bruker MySQL InnoDB, finst det noen gode sider om handler om dette temaet? Lenke til kommentar
tZar Skrevet 3. mars 2007 Del Skrevet 3. mars 2007 (endret) aha det var eg ikkje klar over. Bruker MySQL InnoDB, finst det noen gode sider om handler om dette temaet? 8070352[/snapback] Se i MySQL manualen for alle datofunksjonene, er mange kjekke der group by year(dato), month(dato) http://dev.mysql.com/doc/refman/5.0/en/dat...-functions.html Endret 3. mars 2007 av tZar Lenke til kommentar
roac Skrevet 3. mars 2007 Del Skrevet 3. mars 2007 Bare sånn til informasjon: Denne problemstilligen kommer på grunn av dårlig valg av datatyper. Det er en grunn til at datatypen Date finnes. Lenke til kommentar
Runar0 Skrevet 3. mars 2007 Forfatter Del Skrevet 3. mars 2007 Putta year month og day i eit DATE felt. Funket heilt supert no. Tusen takk for hjelpa Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå