Just nu i M3-nätverket
Jump to content

Flera select i samma?


tonlof

Recommended Posts

Hej, har en mycket simpel databas som består av klockslag och antal.

Databasen uppdateras varje minut med ett nytt inlägg med klockslag + antal.

 

+-++

| datum | antal |

+============+===+

| 2008-12-01 16:45 | 445 |

| 2008-12-01 16:46 | 543 |

| 2008-12-01 16:47 | 147 |

| 2008-12-01 16:48 | 343 |

~~~~~~~~~~~~~~~~~~

| 2008-12-02 16:45 | 415 |

| 2008-12-02 16:46 | 513 |

| 2008-12-02 16:47 | 127 |

| 2008-12-02 16:48 | 363 |

 

Vad jag vill få ut är att från t.ex klockan 00.00 fram tills nu hur stor sum(antal) är. Samt att jag vill kunna jämföra detta med gårdagen och ev. ytterligare dagar bakåt.

Resultat.

+-++

| datum | antal |

+=====+===+

| 12-01 | 4745 |

| 12-02 | 3456 |

| 12-03 | 6982 |

 

 

Sen vore det t.ex intressant o kunna jämföra December 2007 mot December 2008 etc.

 

I värsta fall om det inte går får jag väl ha flera olika recordset o pussla ihop dom?

 

[inlägget ändrat 2009-01-24 14:51:58 av tonlof]

 

 

Tården flyttad från MySQL av moderator

 

[inlägget ändrat 2009-01-24 16:32:43 av Cluster]

Link to comment
Share on other sites

Jag har letat ihjäl mig efter denna tråden-- Tack Cluster ;)

 

För att få en lista på summa antal uppdelat på dag kan man köra (mysql exempel)

SELECT DATE(`datum`) AS `thedate`, SUM(`antal`) FROM `tabell` GROUP BY DATE(`datum`)

Gör inte förfrågningen om du har jättemånga dagar, då blir det lite mycket, så testa att begränsa med LIMIT eller så

 

Sedan gjorde jag ett formulär för att få ut summa antal för specifikt datum

<form method="post" action="datetest.asp" id="dateform">
	<fieldset>
		<legend>Välj ett datum</legend>
		<label for="date1">Datum</label>
		<input type="text" id="date1" name="date1" value="<%If (Request.Form("date1")<>"" And IsDate(Request.Form("date1"))=True ) Then Response.Write Request.Form("date1") Else Response.Write date%>"/>
	</fieldset>
	<input type="submit" />
</form>
<%
If Request.Servervariables("REQUEST_METHOD") = "POST" Then
date1=Request.form("date1")
If IsDate(date1) Then 
	sqlStr="SELECT SUM(`antal`) FROM `tabell` WHERE `datum` BETWEEN CONCAT('"&date1&"',' 00:00:00') AND CONCAT('"&date1&" ',TIME(NOW())) GROUP BY DATE(`datum`)"			
	Set RS=Conn.Execute(sqlStr)		
	If Not RS.Eof Then
		Response.Write "<p>Summa "&date1&": "&RS(0)&"</p>"
	Else
		Response.Write "<p>Hittande inga poster för "&date1&"</p>"
	End If 
	RS.Close : Set RS=Nothing
End If 
End If 	
%>

Sedan kan man lägga till ett till fält för ytterligare datum för att jämföra med

 

Link to comment
Share on other sites

Tackar, tyvärr löser det ju bara en del vad jag kan se.

 

Dvs om Klockan nu är 17:55 den 24 januari så vill jag att dagens förbrukning visas fram till 17:55 samt nästa rad ska visa resultatet för gårdagen 00:00 till 17:55 & tredje raden förrgår 00:00 till 17:55 .

Dvs allt ska räknas ut i realtid för att skapa diagram på förhållandet hur man ligger till med förbrukningen vid en viss tidpunkt mod dagarna innan.

 

Mvh

Tony

 

 

Link to comment
Share on other sites

jag gav dig något att utgå ifrån vilket är en väldigt bra grund.

 

Vill du ha ut fler datum, så lägg till det i sql-strängen

 

SQL="SELECT SUM(`antal`) FROM `tabell` WHERE (`datum` BETWEEN CONCAT('"&date1&"',' 00:00:00') AND CONCAT('"&date1&" ',TIME(NOW()))) OR (`datum` BETWEEN CONCAT('"&date2&"',' 00:00:00') AND CONCAT('"&date2&" ',TIME(NOW())))  OR (`datum` BETWEEN CONCAT('"&date3&"',' 00:00:00') AND CONCAT('"&date3&" ',TIME(NOW()))) GROUP BY DATE(`datum`)"			

Notera de tre datumvariablarna.

 

Link to comment
Share on other sites

Jag har letat ihjäl mig efter denna tråden-- Tack Cluster ;)
Tacka inte mig, tacka tonlof som skapade den i "fel" forum till att börja med ;)

 

/Cluster

Moderator för MySQL

 

Link to comment
Share on other sites

Ber så hemskt mycket om ursäkt:( Men bra att den hamnade rätt till slut.

 

Tack så mycket Jonas för hjälpen i rätt riktning, försöker få till med date_add(CURRENT_TIMESTAMP, interval -3 day)) så att det sköter sig utan att behöva fylla i egna datum. Så snart sitter det hoppas jag:)

 

Link to comment
Share on other sites

Nu satt den:)

Nu listas 7 dagar bakåt med aktuell tidpunkt som referens.

SELECT SUM(watt),date(tidpunkt) as datum FROM elmatare1_senaste_dygnet WHERE (tidpunkt BETWEEN CONCAT(date(date_add(CURRENT_TIMESTAMP, interval -6 day)),' 00:00:00') AND date_add(CURRENT_TIMESTAMP, interval -6 day)) 
OR  (tidpunkt BETWEEN CONCAT(date(date_add(CURRENT_TIMESTAMP, interval -5 day)),' 00:00:00') AND date_add(CURRENT_TIMESTAMP, interval -5 day))  
OR (tidpunkt BETWEEN CONCAT(date(date_add(CURRENT_TIMESTAMP, interval -4 day)),' 00:00:00') AND date_add(CURRENT_TIMESTAMP, interval -4 day)) 
OR (tidpunkt BETWEEN CONCAT(date(date_add(CURRENT_TIMESTAMP, interval -3 day)),' 00:00:00') AND date_add(CURRENT_TIMESTAMP, interval -3 day))  
OR (tidpunkt BETWEEN CONCAT(date(date_add(CURRENT_TIMESTAMP, interval -2 day)),' 00:00:00') AND date_add(CURRENT_TIMESTAMP, interval -2 day)) 
OR (tidpunkt BETWEEN CONCAT(date(date_add(CURRENT_TIMESTAMP, interval -1 day)),' 00:00:00') AND date_add(CURRENT_TIMESTAMP, interval -1 day)) 
OR (tidpunkt BETWEEN CONCAT(date(CURRENT_TIMESTAMP),' 00:00:00') AND CURRENT_TIMESTAMP) Group by datum

 

[bild bifogad 2009-01-25 00:22:19 av tonlof]

 

 

KOD-taggar tillagda av moderator

 

[inlägget ändrat 2009-01-25 00:22:44 av Cluster]

[bild bifogad 2009-01-25 00:23:39 av tonlof]

1117789_thumb.jpg

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.



×
×
  • Create New...