11. september 2005 - 14:44Der 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..
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..
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..
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
Synes godt om
Ny brugerNybegynder
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.