21. juli 2010 - 21:01Der er
18 kommentarer og 1 løsning
Udtræk med sum i x periode (2 sql udtræk)
Hej Allesammen.
Jeg har følgende MySql database : Id Bruger Time Sammenh Produkt_id Maengde Vaerdi1 Vaerdi2 Vaerdi3 Vaerdi4 Kommentar
Time er en time() (antal sekunder fra 1970). Sammenh indeholder et tal som kan være mellem 1-7. (forklaring senere)
Mit udtræk kommer fra en anden side og vil se f.eks indeholde nedenstående : §start = start tidspunktet, time() brugt (f.eks 00:00:00 1/10-2008) §end = Slut tidpunktet, time() brugt (f.eks 00:00:00 31/12-2008)
Idéen er at mysql sætningen skal lave to udtræk :
1. (SQL udtræk 1) Den skal adder alle værdierne i vaerdi1, i vaerdi2, i vaerdi3 samt i vaerdi4 (særskilt), for alle poster i perioden §start til §end. Dermed giver udtrækket : §vaerdi1 = f.eks 1234 (i alt) §vaerdi2 = f.eks 1353 (i alt) §vaerdi3 = f.eks 1503 (i alt) §vaerdi4 = f.eks 1425 (i alt)
2. (SQL udtræk 2) Dette udtræk skal på samme måde adder alle værdierne som opdelt jf. ovenstående. Dette skal dog ske i en form for bokse, da kolonennen Sammenh indeholder en værdi som binder dem sammen. Der kan være en værdi i sammenh fra 1 til 7, hvorefter alle værdier med samme sammenhæng skal lægges sammen i given periode. Udputtet skal dermed være : §vaerdi1.1 = f.eks 1432 (i alt) §vaerdi1.2 = f.eks 1234 (i alt) ... §vaerdi7.4 = f.eks 3432 (i alt)
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
Lad os bare starte med den første. Den vil da ikke virke ? Tiden skal vel være imellem istedet. Dermed kan du ikke løse den på den måde. Nu vil den kun fange hvis start og end er ens ?
Den vil jeg lige teste om få minutter. Men hvordan udskriver jeg f.eks den første sum ? Mangler der ikke as eller sådan noget. Eller er variabel defineret som $vaerdi1 ?
$query = mysql_query("SELECT SUM(vaerdi1) as v1, SUM(vaerdi2) as v2, SUM(vaerdi3) as v3, SUM(vaerdi4) as v4 FROM tabel_navn WHERE Time BETWEEN $start AND $slut");
Den driller stadig med tiden, men den virker hvis jeg fjerner denne del (så det med sum virker). Den finder ingen poster hvis jeg prøver f.eks : $start = "0"; $end = "1279743878";
$query = mysql_query("SELECT SUM(vaerdi1) as v1, SUM(vaerdi2) as v2, SUM(vaerdi3) as v3, SUM(vaerdi4) as v4 FROM data WHERE Time BETWEEN $start AND $slut"); $row = mysql_fetch_assoc($query); echo $row['v1'];
Har også prøvet denne
$query = mysql_query("SELECT SUM(vaerdi1) as v1, SUM(vaerdi2) as v2, SUM(vaerdi3) as v3, SUM(vaerdi4) as v4 FROM data WHERE Time >= $start AND $end <= Time"); $row = mysql_fetch_assoc($query); echo $row['v1'];
Kunne være løst således : $query = mysql_query("SELECT SUM(vaerdi1) as v1, SUM(vaerdi2) as v2, SUM(vaerdi3) as v3, SUM(vaerdi4) as v4 FROM data WHERE Time >= $start AND $end <= Time and Sammenh = 1"); Udskriv kode
$query = mysql_query("SELECT SUM(vaerdi1) as v1, SUM(vaerdi2) as v2, SUM(vaerdi3) as v3, SUM(vaerdi4) as v4 FROM data WHERE Time >= $start AND $end <= Time and Sammenh = 2");
Osv op til 7. Men vil gerne have en smart sætning i stedet. Forstår du mig ?
SELECT sammenh, SUM(vaerdi1) as v1, SUM(vaerdi2) as v2, SUM(vaerdi3) as v3, SUM(vaerdi4) as v4 FROM data WHERE Time >= $start AND $end <= Time GROUP BY sammenh
Og du bør kunne udtrække værdierne via en "almindelig":
$q = mysql_query("SELECT sammenh, SUM(vaerdi1) as v1, SUM(vaerdi2) as v2, SUM(vaerdi3) as v3, SUM(vaerdi4) as v4 FROM data WHERE Time >= $start AND $end <= Time GROUP BY sammenh;");
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.