webForumDet fria alternativet

Hjälp med loop!

10 svar · 252 visningar · startad av jimpa

jimpaMedlem sedan jan. 2001361 inlägg
#1

Hej
Jag har en tabell som ser ut ungefär

ID : PublisherID : visad : Klick
1------- 2------- 50-----10
2------- 2------- 20------5
3------- 1------- 2 ------0
4------- 3------- 21------6
5------- 3------- 30------8

Problemet är hur själva loopen ska se ut för att räkna ihop värdet av klick samt visningar där 'PublisherID' är samma! Det svåra blir ju sen att jag vill bara att resp. PublisherID ska skrivas ut en gång.
Ifrån ex. ovan skulle jag vilja att resultatet skulle bli:

PublisherID (2) visningar 70 , klick 15
PublisherID (1) visningar 2 , klick 0
PublisherID (3) visningar 51 , klick 14

Någon som kan hjälpa mig lite på traven :OO

LarsGMedlem sedan dec. 200012 464 inlägg
#2
select publisherID,
          sum(visad) as visningar, 
          sum(klick) as klickningar
  from t
 group by publisherID

Flyttas från ASP

jimpaMedlem sedan jan. 2001361 inlägg
#3

hmm.

Mitt ex. tidigare var en förenklad historia, provade att summera direkt i SQL-satsen men får det inte att stämma riktigt.
SQL'n ser ut så här:

SQL = "Select LogID, lBannerID, lAnnouncerID, lTypeID, lZoneID, lClicks, lHits, SUM(lHits) as sumHits, SUM(lClicks) as sumClicks FROM bLog"

			
	
		If Request("bAnnouncerID") <> "" Then	
		strWhere = " WHERE lAnnouncerID =" & Request("bAnnouncerID") & " "	
		else
		strWhere = ""	
End If	
		If Request("bZoneID") <> "" Then	
		if strWhere <> "" then	
		strWhere = strWhere & "AND lZoneID =" & Request("bZoneID") & " "
		else
		strWhere = " WHERE lZoneID =" & Request("bZoneID") & " "	
		end if
End If

		If Request("bTypeID") <> "" Then	
		if strWhere <> "" then	
		strWhere = strWhere & "AND lTypeID =" & Request("bTypeID") & " "
		else
		strWhere = " WHERE lTypeID =" & Request("bTypeID") & " "	
		end if
End If

		If Request("Qdte") <> "" Then
		FromDte = Request("Qdte")
		if FromDte = "toDay" then
		if strWhere <> "" then
		strWhere = strWhere & " AND lDte =#" & Date() & "# "
		else
		strWhere = strWhere & " WHERE lDte =#" & Date() & "# "
		end if
		else
		strWhere = strWhere
		end if
		End If
		
strOrder = " GROUP BY LogID, lBannerID, lAnnouncerID, lTypeID, lZoneID, lClicks, lHits ORDER BY lAnnouncerID"
		
SQL = SQL & strWhere & strOrder

och loopen

Set RS = Conn.Execute(SQL)
If NOT RS.EOF Then
Do until RS.EOF
Response.Write "AnnonsID: " & RS("lAnnouncerID") & "   lHits: " & RS("lHits") & "  lClicks: " & RS("lClicks") & "  Summa Hits: " & RS("sumHits") & "  Summa Klick: " & RS("sumClicks") & "<br>"
RS.MoveNext
Loop
End If

och resultatet

AnnonsID: 11 lHits: 3 lClicks: 0 Summa Hits: 3 Summa Klick: 0
AnnonsID: 14 lHits: 2 lClicks: 0 Summa Hits: 2 Summa Klick: 0
AnnonsID: 14 lHits: 6 lClicks: 0 Summa Hits: 6 Summa Klick: 0
AnnonsID: 16 lHits: 7 lClicks: 0 Summa Hits: 7 Summa Klick: 0
AnnonsID: 16 lHits: 2 lClicks: 0 Summa Hits: 2 Summa Klick: 0

Jag vill att resultatet ska bli

AnnonsID: 11 Summa Hits: 3 Summa Klick: 0
AnnonsID: 14 Summa Hits: 8 Summa Klick: 0
AnnonsID: 16 Summa Hits: 9 Summa Klick: 0

Jag vill alltså att summan för hits och klicks skall skrivas ut en gång för varje AnnonsID
Någon som har nåt förslag?

LarsGMedlem sedan dec. 200012 464 inlägg
#4

Du får välja, om du vill ha det resultatet så kan du inte ha med dom andra kolumnerna i select-listan

jimpaMedlem sedan jan. 2001361 inlägg
#5

Ok jag misstänkte det..
Men hur kan man göra för att få ut det resultatatet jag eftersträvar
Måste ju gå på nåt annat sätt..nån idé.. någon

jimpaMedlem sedan jan. 2001361 inlägg
#6

LarsG: Kanske borde denna tråd flyttas tillbaka till ASP?

LarsGMedlem sedan dec. 200012 464 inlägg
#7

Jo, kanske det. Om du vill ha alla värden och även summera så får du sköta summeringen själv.

Hämta värdena sorterade på annonsID och håll reda på när du får ett nytt värde för annonsID.

jimpaMedlem sedan jan. 2001361 inlägg
#8

hmm

Om jag nu vill att resutatet ska skrivas ut så här

AnnonsID:11 Summa Hits: 3 Summa Klick: 0
               - BannerID 1 lHits: 3 lClicks: 0
AnnonsID: 14 Summa Hits: 8 Summa Klick: 0
               - BannerID 40 lHits: 2 lClicks: 0 
               - BannerID 21 lHits: 6 lClicks: 0 
AnnonsID: 16 Summa Hits: 9 Summa Klick: 0
               - BannerID 12 lHits: 7 lClicks: 0 
               - BannerID 42 lHits: 2 lClicks: 0

Alltså Skriva ut summan först som ex. ovan :l
Tacksam för alla förslag och idéer!!

jimpaMedlem sedan jan. 2001361 inlägg
#9

Hallå....
Ingen som vet :o

LarsGMedlem sedan dec. 200012 464 inlägg
#10
dim a,q,rs,connect,i,pid, sumhit,sumklick
set connect = server.createobject("adodb.connection")
connect.open "dsn"
q = "select annonsid,bannerid,hits,klick from blog order by annonsid "

set rs = connect.execute(q)
if not rs.eof then
   a = rs.getrows()
   pid = 0

   for i = 0 to ubound(a,2)
       if pid <> clng(a(0,i)) then
          pid = clng(a(0,i))
          sumhit = 0
          sumklick = 0
          for j = i to ubound(a,2)
              if pid <> clng(a(0,j)) then exit for
              sumhit = sumhit + clng(a(2,j))
              sumklick = sumklick + clng(a(3,j))
          next
          response.write "AnnonsID:" & pid & " Summa Hits: " & sumhit & " Summa klick: " & sumklick & "<br>"
       end if
       response.write " - BannerID " & a(1,i) & " lHits: " & a(2,i) & " lClicks: " & a(3,i) & "<br>"
   next
else
  response.write "Tomt"
end if
rs.close
set rs = nothing
connect.close
set connect = nothing
jimpaMedlem sedan jan. 2001361 inlägg
#11

Tack LarsG! :D
Ska genast prova!

138 ms totalt · 3 externa anrop · v20260731065814-full.0e50b1ef
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
136 ms — hämta tråd, inlägg och bilagor (db)