Här har jag en tabell som håller budgeten för respektive kategori och år. Har gjort ett fält per månad istället för att använda en separat rad för varje månad pga att den ju ändå kommer fyllas i slutet av året. I början av året verkar det som slöseri med alla nullvärden som blir, men i slutet av året har jag ändå sparat plats på denna approach, inte sant? >Har gjort ett fält per månad istället för att använda en separat rad för varje månad pga att den ju ändåen optimeringsfråga...
Men, till problemet - här loopar jag alltså igenom varje rad (varje kategori) vars budget skall uppdateras. execute måste alltså köras en gång för varje kategori. Finns det ett sätt att skriva in det här i SQL-koden så att bara ett anrop behövs?
kommentera gärna andra tummen-mitt-i-handen element i min kod också... =)
<!-- #include file="conn.asp" -->
<%
Set Rs = Server.CreateObject("ADODB.Recordset")
IF CInt(request.querystring("manad")) = 1 THEN
from_ar = session("year")-1
from_manad = 12
till_manad = 1
ELSEIF CInt(request.querystring("manad")) > 1 AND CInt(request.querystring("manad")) < 13 THEN
from_ar = session("year")
from_manad = CInt(request.querystring("manad"))-1
till_manad = CInt(request.querystring("manad"))
ELSE
response.Redirect "bad.htm"
END IF
rs.Open "SELECT budget.kategori AS kategori, budget.m" & from_manad & " AS belopp FROM `budget` INNER JOIN kategorier ON budget.kategori = kategorier.id WHERE kategorier.user=" & session("user") & " AND budget.year=" & from_ar,Conn
Do until rs.EOF
conn.execute "UPDATE budget SET m" & till_manad & "=" & rs("belopp") & " WHERE kategori=" & rs("kategori") & " AND `year`=" & session("year")
rs.MoveNext
loop
rs.Close
set rs=nothing
conn.close
set conn = nothing
response.redirect "budget.asp?manad=" & CInt(request.querystring("manad"))
%>Sv: en optimeringsfråga...
>kommer fyllas i slutet av året. I början av året verkar det som slöseri med alla nullvärden som blir, men
>i slutet av året har jag ändå sparat plats på denna approach, inte sant?
Varför skall du spara plats? För bara den extra tid du lägger ner kan du nog köpa flera terrabyte hårddisk.
Det är helt fel approach. Skapa en rad för varje period så blir allt mycket enklare.
Jag brukar använda en datumkolumn där dagen alltid är den första i månaden.
Andra lösningar brukar använda år + månad men jag tycker det blir så jobbigt att hantera årskiften då.