25. maj 1999 - 00:38Der er
11 kommentarer og 1 løsning
Hjælp til SQL-streng
Jeg har brug for lidt hjælp til en sql-streng til en hitliste
Jeg har en db med to tabeller.
tabel 1 registrerer hits fra forskellige sider og indeholder 3 kolonner. Kolonne 1 (HitDato) indeholder datoen for hit, Kolonne 2 (HitAntal) indeholder det antal hits der har været på siden den enkelte dag og Kolonne 3 (HitSite) indeholder IDnummer på den site der er tale om. Hver site optræder altså max en gang pr dag ((Hitantal) opdateres)
tabel 2 indeholder info om de enkelte registrerede sider. Altså (HitSite)(Beskrivelse)(URL) etc.
Det udtræk jeg gerne vil lave fra databasen skal se ud som følger:
- 1 post for hver site - de to tabeller skal være linket med hinanden via (HitSite) - sorteringen skal være efter gns hits for de sidste 5 dage - antal samlede hits for hver site for hele perioden (ikke kun de sidste 5 dage)
Jeg kan sagtens gøre ovenstående ved brug af flere SQL strenge, men er det muligt at samle det hele i en streng ?
Jeg er ikke helt sikker på, at jeg har forstået problematikken, men prøv med denne SELECT UNION.
SELECT Table1.HitDato, Sum(Table1.HitAntal) AS SumOfHitAntal, Table2.Beskrivelse, Table2.URL FROM Table1, Table2 WHERE (((Table1.HitSite)=[Table2].[HitSite]) and Table1.HitDato >= (Date() - 5)) GROUP BY Table1.HitDato, Table2.Beskrivelse, Table2.URL ORDER BY Sum(Table1.HitAntal) DESC;
UNION SELECT Table1.HitDato, Sum(Table1.HitAntal) AS SumOfHitAntal, Table2.Beskrivelse, Table2.URL FROM Table1, Table2 WHERE (((Table1.HitSite)=[Table2].[HitSite])) GROUP BY Table1.HitDato, Table2.Beskrivelse, Table2.URL ORDER BY SumOfHitAntal DESC;
Synes godt om
Slettet bruger
25. maj 1999 - 08:13#6
Jeg er ikke sikker på en UNION er velegnet her.
Jeg mener der dynamisk bør genereres 2 forespørgsler der kan lægge til grund for den endelige forspørgsel som kan være statisk.
Kan du forklare hvordan ? Jeg mener heller ikke UNION does the trick. Jeg har følgende 2 SQL strenge som gør det jeg gerne vil, men er det muligt at lave en enkelt. Query1 gør det meste og Query2 giver mig den ønskede Totale hits over hele perioden.
Query1 = "SELECT Tabel1.HitID, HitURL, Description, SUM(HitCount) AS HitSum FROM Tabel1, Tabel2 WHERE (Tabel1.HitID=Tabel2.HitID AND HitDate>= (Date() - 5)) GROUP by Tabel1.HitID, HitURL, Description ORDER BY -SUM(HitCount);"
Query2 = "SELECT HitID, SUM(HitCount) AS HitTotSum FROM Tabel1 GROUP by HitID ORDER BY -SUM(HitCount);"
John Raahauge
Synes godt om
Slettet bruger
25. maj 1999 - 18:24#8
Hvis du har de 2 queries kan du vel gøre følgende :
QueryFinal = SELECT Query1.HitID, Query1.HitSum, Query2.HitToSum FROM Query1 INNER JOIN Query2 ON Query1.HitID = Query2.HitID;
Microsoft][ODBC Microsoft Access 97-driver] Microsoft Jet-databasemotoren kan ikke finde inputtabellen eller forespørgslen "Query1". Kontroller, at den findes, og at navnet er stavet korrekt.
Synes godt om
Slettet bruger
26. maj 1999 - 07:39#10
De to Queries (Query1 og Query2) skal være gemt i Access databasen.
Jeg takker. Det er sku' utroligt hvad man kan lave.
Er det særligt optimalt at gøre det på den måde ? Eller virker det lige så godt at spørge to gange ?
Synes godt om
Slettet bruger
26. maj 1999 - 08:33#12
I dit tilfælde vil jeg mene at det er den eneste rigtige måde at gøre det på
:-)
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.