Avatar billede ttopholm Nybegynder
11. september 2005 - 14:44 Der er 8 kommentarer og
1 løsning

Sætning optimeres med aggrigatfunktioner

er det muligt at lave dette i selve sql'en end som den er nu..

SQLstmt = "SELECT * FROM Ordrelinie WHERE OrdreID = " & RSOrdre("OrdreID")
Set RSOrdrelinie = Conn.Execute(SQLstmt)
If Not RSOrdrelinie.EOF Then
While Not RSOrdrelinie.EOF
    sum = sum + (RSOrdrelinie("Pris") * RSOrdrelinie("Antal"))
    RSOrdrelinie.MoveNext
  Wend
End If

at den tager hver tuple og ganger pris med antal, hvor efter den ligger det resultat sammen med de resterenes tuplers sum..
Avatar billede arne_v Ekspert
11. september 2005 - 14:48 #1
prøv:

SQLstmt = "SELECT SUM(Pris*Antal) FROM Ordrelinie WHERE OrdreID = " & RSOrdre("OrdreID")
Avatar billede ttopholm Nybegynder
11. september 2005 - 16:56 #2
Okay..

Nu har jeg sat den sammen med en anden sætning..

SQLstmt = "SELECT SUM(ol.pris*ol.antal) AS sum, COUNT(*) AS antalordre FROM kunde k, Ordre o, Ordrelinie ol WHERE k.FirmaID = " & Session("FirmaID") & "AND  o.KundeID = k.KundeID AND DatePart(mm, o.Ordredato) = " & I & " AND DatePart(yyyy, o.Ordredato) = " & aar & " AND o.Status = 'FAK' AND ol.OrdreID = o.OrdreID"

Det virker ogå næsten..
fordi min count tæller forkert.. F.eks giver den 2 når der kun er en tuple eller den giver 19 når der kun er 10...
Det jeg skal have ud er hvormange ordre der er.. og nok ikke hvor mange ordrelinier som den måske giver mig..
Avatar billede arne_v Ekspert
11. september 2005 - 17:00 #3
prøv at erstatte

COUNT(*)

med

COUNT(DISTINCT o.OrdreID)
Avatar billede ttopholm Nybegynder
11. september 2005 - 17:00 #4
Var lige ved at skrive det.. kom selv i tanke om den..
COUNT(DISTINCT(o.ordreid))
Avatar billede arne_v Ekspert
11. september 2005 - 17:01 #5
så vil jeg ligge et svar
Avatar billede ttopholm Nybegynder
11. september 2005 - 17:02 #6
Man kan altid regne med dig arne_v ;-)
Avatar billede ttopholm Nybegynder
11. september 2005 - 22:34 #7
Fandt en lille fejl i min sætning, hvis der ingen ordreid er i ordrelinie der matcher den pågældende tuple, bliver den ikke tælt med i count hvordan får jeg den til det..
Avatar billede arne_v Ekspert
11. september 2005 - 22:41 #8
er det ikke primær nøgle ?
Avatar billede ttopholm Nybegynder
11. september 2005 - 23:15 #9
ordreid i ordreline er ikke primær.. men den skal jo tælle på ordreid i ordre som er primær key.. men den tæller ikke dem med hvor der ikke er noget ordrelinier
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
Computerworld tilbyder specialiserede kurser i database-management

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