Avatar billede run Nybegynder
25. maj 1999 - 00:38 Der 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 ?
Avatar billede 127144146281 Nybegynder
25. maj 1999 - 01:32 #1
Prøv lige at poste de strenge du har.
Avatar billede run Nybegynder
25. maj 1999 - 03:54 #2
Jeg har ikke lavet nogen strenge endnu, men umiddelbart skulle det da være muligt. Det største problem ser jeg i at samle dem i en.

Linket er jo bare en join allá Tabel1.Hitsite=Tabel2.Hitsite.

Gns for de sidste 5 dage giver samme sortering som antal hits for de sidste 5 dage, så det skulle også være relativt smertefrit

og endelig er samlede hits vel den letteste

Jeg ser bare et datoproblem hvis jeg skal samle det hele.

Points går til den simpleste løsning
Avatar billede run Nybegynder
25. maj 1999 - 05:15 #3
Sorteringen kunne fx se således ud, men hvordan får jeg det hele samlet ?

Query = "SELECT HitID, SUM(HitCount) AS HitSum FROM Hitlist WHERE HitDate>= (Date() - 5) GROUP by HitID ORDER BY -SUM(HitCount)"
Avatar billede Slettet bruger
25. maj 1999 - 07:54 #4
Hvorfor skal det samles i en streng ??
Avatar billede pgb Nybegynder
25. maj 1999 - 07:55 #5
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;
Avatar billede 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.
Avatar billede run Nybegynder
25. maj 1999 - 17:54 #7
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
Avatar billede 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;

Avatar billede run Nybegynder
25. maj 1999 - 19:46 #9
Kan man godt behandle queryer på den måde ?

Den brokker sig ihvertilfald med:

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.
Avatar billede Slettet bruger
26. maj 1999 - 07:39 #10
De to Queries (Query1 og Query2) skal være gemt i Access databasen.

Herefter kan du oprette QueryFinal
Avatar billede run Nybegynder
26. maj 1999 - 08:29 #11
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 ?
Avatar billede 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å

:-)
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
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

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