13. april 2001 - 16:21Der er
27 kommentarer og 4 løsninger
SQL Sætning Søges
Jeg sidder od nørkler med en SQL Sætning - men nu trænger jeg til hjælp - lad mig her simplificere problemstillingen.
Lad os forestille os et atletik stævne, jeg har 2 tabeller - tabel 1 hedder Deltager og består af flg felter pID som er et Autonummer, DeltagerNavn og Alder som er af typen text
Så har jeg en Resultat tabel med felterne pID, Kastlaengde, Dato
Der er lavet en en til mange relation fra Deltager.pID til Resultat.pID
I min Deltager Tabel opretter jeg nu f.eks 4 navne der deltager i min konkurence i f.eks spydkast.
Hvergang en deltager Kaster et spyd bliver kastets længde registreret i Resultat tabellen,
da der jo er relation imellem Deltager.pID og Resultat.pID, vil nogle record i resultat tabellen f.eks se således ud
Nu kommer queryet jeg skal have hjælp til - Jeg skal have lavet et Query der Lister Alle Deltagerne fra Deltager tabellen og vha Inner Join / Group skal deres længste kast (Max) fremgå i Query resultatet for hver deltager.
Set Rs = Conn.Execute(\"select max(resultat.kastlaengde), deltager.deltagernavn from resultat, deltager where deltager.pid = resultat.pid group by deltager.pid\") TopKast = Rs(0)
Set Rs = Conn.Execute(\"select max(resultat.kastlaengde) as topkast, deltager.deltagernavn from resultat, deltager where deltager.pid = resultat.pid group by deltager.pid\") TopKast = Rs(0)
SELECT deltager.navn, deltager.alder, MAX(resultat.kastlaengde) FROM deltager INNER JOIN resultat ON deltager.pid=resultat.pid GROUP BY deltager.navn, deltager.alder
Har du testet om min virker? Hvis den gør skal der bare liste mere på for at få de ekstra oplysninger ud:
Her er den så:
\"SELECT deltager.navn, deltager,pid, deltager.alder, resultat.dato, MAX(resultat.kastlaengde) as maxkastelaenede FROM deltager INNER JOIN resultat ON deltager.pid=resultat.pid GROUP BY deltager.navn, deltager.alder, deltager.pid, resultat.dato\"
Jeg tror ikke den kan laves med almindlig JOIN og MAX og GORUP BY, men man er nød til at lave nested SQL sætninger. Jeg har forsøgt, men kan ikke finde ud af at hive resultat-id\'er ud sammen med pID og længeste kast og Dato.
SELECT Deltager.pid, deltager.deltager, deltager.alder, resultat.kastlaengde, resultat.dato FROM deltager,resultat WHERE deltager.pid = resultat.pid and resultat.kastlaengde in (SELECT Max(resultat.Kastlaengde) AS MaksOfKastlaengde FROM resultat GROUP BY resultat.pID);
selvfølgelig, selvfølgelig. Godt gået. Jeg selv var så forkuseret på først at få resultat.id ud og så selecete med det... Samme princip. Men jeg er sku\' glad for at se løsningen
hvad sker der hvis to har samme max kastelængde? SÅ virker der vist ikke.
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.