Jag skulle behöva hjälp med att tänka klart(!). KAn inte komma med så mycket förslag med ASP.NET. Tack Andreas för att du tar dig tid att hjälpa mig.Ta fram statistik
Jag konventerar fortfarande ifrån klassisk asp till asp.net 2.0 språket C#.
Så här gjorde jag i klassisk asp.
Tabellstruktur:
Tabellnamn Listan
ID
Ratt
Datum
Det finns naturligtvis fler fält, men för statistiken så räcker detta.
Jag gjorde först en fråga "frDatum"...
<code>
SELECT Listan.Datum, Year([Datum]) AS År, Month([Datum]) AS Månad, Day([Datum]) AS Dag
FROM Listan;
</code>
Därefter en fråga i scriptet som byggde på den...
<code>
SELECT Count(frDatum.Månad) AS antalMånad, frDatum.Månad
FROM frDatum
WHERE frDatum.År=Year(Date())
GROUP BY frDatum.Månad
ORDER BY frDatum.Månad DESC
</code>
Jag hadde desutom en till...
<code>
SELECT * FROM frDatum where År = year(date())
</code>
..därefter ung såhär
<code>
TotalCount=0+RS1.RecordCount
Count1= (RS("Antal") /TotalCount)*100
Bild = "./buttons/" & farg() & ".gif"
<%= RS("Antal")%>
<%
If RS("logtimeadress") = month(date()) THEN
Response.Write " <FONT COLOR=RED><STRONG>"
Response.Write Date_GetMonthName(RS("logtimeadress"))
Response.Write "</STRONG></FONT COLOR=RED>"
Else
Response.Write " " & Date_GetMonthName(RS("logtimeadress"))
End If
%>
<td align="left" valign="middle"> <img src="<%= Bild%>" border=1 height=10 width=<%=4*count1/3%> alt="Count 1">
</TD><TD ALIGN=RIGHT><font size="1">
<%=RS("Antal") %></TD><TD ALIGN=RIGHT> =</TD><TD ALIGN=RIGHT> <%= Round(Count1,2) %>%</font></td>
</code>
Puh det blev visst lite långt det här.
Hursomhelst hur bör jag göra nu när det gäller asp.net 2.0?
Kan jag få ihop enbart en SQL?
Hur bör jag presentera datan?Sv: Ta fram statistik
Jag tycker inte om ditt uppläg av frågor.
Din första sparade fråga: frDatum
Detta då din fråga kommer göra funktionsarop på samtliga poster dessutom kommer databasmotorn inte kunna använda index eftersom du gör urvalet på resultatet av funktionen,
Om du vill undvika stora förändringa rekommenderar jag att du lägger in parametrar i frDatum frågan.
JAg antar att det är Access, du skriver i så fall så här:
PARAMETERS FromDate DateTime, UntilDate DateTime;
SELECT Listan.Datum, Year([Datum]) AS År, Month([Datum]) AS Månad, Day([Datum]) AS Dag
FROM Listan
WHERE Datum >= FromDate AND Datum < UntilDate;
Då kan du i din andra fråga skippa vilkoret, denna fråga "ärver" parametrarna från den underliggande frågan:
SELECT Count(*) AS antalMånad, frDatum.Månad
FROM frDatum
GROUP BY frDatum.Månad
ORDER BY frDatum.Månad DESC
Det finns andra trådar på forumet som tar upp hur du skickar med parametervärden till frågor, både för gamla ASP och ASP.NET.
Sv:Ta fram statistik
Ja det är Access.
Du tyckte inte om mina gammla frågor, jag insåg ju att det var kanske på tiden att modernisera dessa.
Det resultat som jag ville ha är: antal poster vid ett visst år, antal månader samma år, antal poster per månad.
Jag måste nog ha missförståt dina sql, därför att den ville ju att jag hela tiden skulle mata in datumet. I min förra SQL så "fick jag ju det gratis".
Tänker jag knasigt?