webForumDet fria alternativet

sql sats

11 svar · 337 visningar · startad av jonas76

jonas76Medlem sedan mars 200278 inlägg
#1

Jag har en sats som är följande:
sql="select sum(antaltimmar) as resultat from utbildningsprogram"

hur lägger jag in i den satsen så den hämtar upp flera kolummner från databasen tex :namn, efternamn osv så jag kan redovisa vilka personer som jag har summerat från.

Tacksam för svar.

LR^evil.sidMedlem sedan maj 2002552 inlägg
#2

fungerar det inte med:

[red]sql = " select namn, efternamn, sum(antaltimmar) as resultat from utbildningen "
set rs = con.execute ( sql )[/red]
LarsGMedlem sedan dec. 200012 465 inlägg
#3
sql="select sum(antaltimmar) as resultat,namn, efternamn  from utbildningsprogram group by namn, efternamn "

Alla kolumner som finns med i group by måste också finnas med i select-listan.

jonas76Medlem sedan mars 200278 inlägg
#4

Jag far en del felmedelande.
Jag postar hela min kod sa kan ni se hur den ser ut, det jag vill ar att aven hamta upp kolumnerna : fnamn, enamn, utbildning fran databasen.
sa sidan skall redovisa total antal timmar och vilka personer som sokkriteriet stammer med.:

<%

dim sokord1, sokord2, sokord3

sokord1=request.form("sokord1")
sokord2=request.form("sokord2")
sokord3=request.form("sokord3")

set connection=server.createobject("adodb.connection")
connection.open "dsn=cmt1"

stm = "Select Sum(antaltimmar) as resultat From utbildningsprogram where 1=1"

if sokord1 \<\> "All" then 
stm = stm & "and konto = '" & sokord1 & "' "

end if

if sokord2 \<\> "All" then 
stm = stm & "and manad = '" & sokord2 & "' "

end if

if sokord3 \<\> "All" then 
stm = stm & "and ar = " & sokord3 & " "

end if

set rs = connection.execute(stm)


if  isnull(rs("resultat")) then

  resultat = 0
  
else

  resultat = round(rs("resultat"))

end if

rs.close 
connection.close
set connection = nothing

%>

Account: <%=sokord1%><br>
Month: <%=sokord2%><br>
Year: <%=sokord3%><br>
Training hours: <%=resultat%><BR>

jonas76Medlem sedan mars 200278 inlägg
#5

huum natt som verkar spoka ar det om jag tar bort fran sql satsen "where 1 = 1 " sa far jag "from clause" felmedelande men har jag kvar " where 1=1 " sa verkar det som den inte gillar att man lagger in fler select kriterier for da far jag foljande fel:

You tried to execute a query that does not include the specified expression 'fnamn' as part of an aggregate function.

Hjalper detta natt pa vagen ??

jonas76Medlem sedan mars 200278 inlägg
#6

om jag andrar : stm = "Select Sum(antaltimmar) as resultat From utbildningsprogram where 1=1"

till : stm = "Select Sum(antaltimmar) as resultat From utbildningsprogram group by antaltimmar "

sa funkar det oxa men sa fort jag lagger till :

stm = "Select fnamn, Sum(antaltimmar) as resultat From utbildningsprogram group by antaltimmar, fnamn"

sa blir det felmedeland : You tried to execute a query that does not include the specified expression 'fnamn' as part of an aggregate function...

fattar ingetting????????

LAMPMedlem sedan mars 2002729 inlägg
#7

när du använder group by måste alla fält i din select, vara med i group by eller måste det vara en aggregat-funktion.

En liten chansning, om du struntar i att ge summeringen ett namn:

stm = "Select fnamn, Sum(antaltimmar) From utbildningsprogram group by antaltimmar, fnamn"

och använder tex rs(1) istället. Vill minnas att jag fått knas med liknande.

solbulleMedlem sedan mars 20014 998 inlägg
#8

Annars testa med:

stm = "Select Sum(antaltimmar) as resultat, fnamn From utbildningsprogram group by antaltimmar, fnamn"

jonas76Medlem sedan mars 200278 inlägg
#9

detta funkar nastan : stm = "Select Sum(antaltimmar) as resultat, fnamn From utbildningsprogram group by fnamn, antaltimmar "

men da far jag bara antalet timmar i forsta raden i databasen, den summerar tydligen inte, men kor jag bara "sum" funktionen utan "fnamn" med sa summerar den korrekt.

solbulleMedlem sedan mars 20014 998 inlägg
#10

variabeln resultat är den som ska innehålla det totala, summerade antalet timmar väl? Och det gör den alltså inte?

En variant är väl också att köra:

stm = "Select Sum(antaltimmar) as resultat, fnamn, antaltimmar From utbildningsprogram group by fnamn, antaltimmar"

jonas76Medlem sedan mars 200278 inlägg
#11

Nej tyvarr det funka inte , jag kan ju inte fatta varfor summeringen slutar att funka bara for att man lagger till fler saker i select satsen?????

jonas76Medlem sedan mars 200278 inlägg
#12

Jag loste det faste inte riktigt som jag tankt men om det ar nagon som udrar hur sa postar jag sidan ifall nagon anna skulle behova veta nagon gang..

<%

dim sokord1, sokord2, sokord3

sokord1=request.form("sokord1")
sokord2=request.form("sokord2")
sokord3=request.form("sokord3")

set connection=server.createobject("adodb.connection")
connection.open "dsn=cmt1"

stm = "Select Sum(antaltimmar) as resultat From utbildningsprogram where 1=1 "

if sokord1 \<\> "All" then 
stm = stm & "and konto = '" & sokord1 & "' "

end if

if sokord2 \<\> "All" then 
stm = stm & "and manad = '" & sokord2 & "' "

end if

if sokord3 \<\> "All" then 
stm = stm & "and ar = " & sokord3 & " "

end if

set rs = connection.execute(stm)



if  isnull(rs("resultat")) then

  resultat = 0
  
else

  resultat = round(rs("resultat"))

end if

%>

Account: <%=sokord1%><br>
Month: <%=sokord2%><br>
Year: <%=sokord3%><br>
Training hours: <%=resultat%><BR>
<hr>
<%

rs.close
set connection=nothing
%>

<%
set connection=server.createobject("adodb.connection")
connection.open "dsn=cmt1"

stm = "Select * from utbildningsprogram where 1=1"

if sokord1 \<\> "All" then 
stm = stm & "and konto = '" & sokord1 & "' "

end if

if sokord2 \<\> "All" then 
stm = stm & "and manad = '" & sokord2 & "' "

end if

if sokord3 \<\> "All" then 
stm = stm & "and ar = " & sokord3 & " "

end if

set rs = connection.execute(stm)

do until rs.eof
%>

<table>
<tr>
<td width="90">Anst Nr:</font> <font color="blue"><%=rs("anstnr")%></font></td>
<td width="100">Namn:</font> <font color="blue"><%=rs("fnamn")%></font></td>
<td width="100"></font> <font color="blue"><%=rs("enamn")%></font></td>
<td width="100">Konto:</font> <font color="blue"><%=rs("konto")%></font></td>
<td>Utbildning:</font> <font color="blue"><%=rs("utbildning")%></font></td></tr>
</table>
<table><tr>
<td width="200">Syfte:</font> <font color="blue"><%=rs("syfte")%></font></td>
<td width="100">Typ:</font> <font color="blue"><%=rs("typ")%></font></td>
<td width="250">Trainer</font> <font color="blue"><%=rs("tranare")%></font></td>

</tr>
</table>
<hr>

<%
rs.movenext
loop
rs.close
set connection=nothing
%>

Genererad på 383 ms · cache AV · v20260730165559-full.f96bc7eb