Avatar billede mecenor Nybegynder
02. april 2006 - 21:12 Der er 1 kommentar og
1 løsning

Hver vare skal kun vises én gang ved optælling

En side skal vise samlet antal solgte varer for hvert respektive produktID. Det gør nedenstående kode. Men hvis en vare figurerer flere gange, vises de første køb også, fx:
ID: 1 - Navn1 - Antal: 1
ID: 2 - Navn2 - Antal: 3
ID: 2 - Navn2 - Antal: 6
ID: 2 - Navn2 - Antal: 9

Hvordan undgår jeg det?

Kode:

i1 = 0

call dbStartStr("SELECT * FROM OrderList INNER JOIN Orders ON OrderList.OrderID = Orders.ID WHERE Orders.ID > 362 and Orders.Confirmed = True ORDER BY OrderList.ProductID")
while not rs.eof
    i1 = i1 + 1
    vin(i1,1) = rs("ProductID")
    vin(i1,2) = rs("Vinnavn")
    vin(i1,3) = rs("Antalkasser")
    samlet = samlet + vin(i1,3)
    rs.movenext
wend

vin(0,0) = i1

call dbStopStr()

for i1 = 1 to vin(0,0)
    if forrige(1) = vin(i1,1) then
        vin(i1,3) = vin(i1,3) + forrige(3)
    end if
    response.write "<tr><td colspan='4'>&nbsp;&nbsp;ID:&nbsp;" & vin(i1,1) & "&nbsp;-&nbsp;"  & vin(i1,2)  &"&nbsp;-&nbsp;Antal:&nbsp;"  & vin(i1,3)  &"</td></tr>"
   
forrige(1) = vin(i1,1)
forrige(2) = vin(i1,2)
forrige(3) = vin(i1,3)
next
Avatar billede eagleeye Praktikant
02. april 2006 - 21:59 #1
Du kan lave SQL sætningen sådan den regner det ud med sum af antal og så bruge group by:

call dbStartStr("SELECT ProductID, Vinnavn, sum(Antalkasser) as sumAntalkasser FROM OrderList INNER JOIN Orders ON OrderList.OrderID = Orders.ID WHERE Orders.ID > 362 and Orders.Confirmed = True GROUP BY ProductID, Vinnavn ORDER BY OrderList.ProductID")



Din kode som henter fra database og ligger i arrayet vil komme til at se sådan her ud:


call dbStartStr("SELECT ProductID, Vinnavn, sum(Antalkasser) as sumAntalkasser FROM OrderList INNER JOIN Orders ON OrderList.OrderID = Orders.ID WHERE Orders.ID > 362 and Orders.Confirmed = True GROUP BY ProductID, Vinnavn ORDER BY OrderList.ProductID")
while not rs.eof
    i1 = i1 + 1
    vin(i1,1) = rs("ProductID")
    vin(i1,2) = rs("Vinnavn")
    vin(i1,3) = rs("sumAntalkasser")
    samlet = samlet + vin(i1,3)
    rs.movenext
wend
Avatar billede mecenor Nybegynder
02. april 2006 - 22:15 #2
Sweet, Eagleeye - tak!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester