Avatar billede Slettet bruger
19. juli 2002 - 16:53 Der er 3 kommentarer og
1 løsning

En til SQL x-perterne

Hej eksperter!

Jeg sidder og roder med et forum/message board, og er løbet ind i følgende:

Når jeg lister mine poster, vil jeg gerne vise, hvor mange svar, der er under det pågældende post.

Jeg har to tabeller: "tblPoster" og "tblSvar" som er relaterede på "tblPoster"s primære nøgle ("Post_ID")

Jeg kunne selvfølgelig lave en simpel "Select * tblPoster" og så iterere gennem mit recordset, og gennem hver iteration oprette et nyt recordset udfra noget ala: "SELECT COUNT(*) AS antalSvar FROM tblSvar WHERE Post_ID = " & aktuelPostID

På denne måde ville jeg kunne se antal svar for hver post jeg støder på...

Men kan jeg ikke "slå det sammen" SQL? Så jeg slipper for at oprette et ekstra recordet og en ekstra forespørgsel ved hver itreration?

Noget ala:

"SELECT Post_ID, Post_Overskrift, (SELECT COUNT(*) FROM tblSvar WHERE tblSvar.Post_ID = tblPoster.Post_ID) As antalSvar FROM tblPoster;"

Jeg håber jeg gør mig forståelig, ellers må I endelig lade mig det vide. På forhånd tak for hjælpen.
Avatar billede keysersoze Ekspert
19. juli 2002 - 17:08 #1
en måde jeg lavede noget pågældende på engang var simpelthen at lave en "spm" tabel samt en "svar" tabel - når der så kom et svar havde jeg en kolonne i min spm-tabel hvor der blev lagt 1 til den allerede eksisterende værdi

denne måde kræver selvfølgelig arbejdet på et andet tidspunkt i din kode, men det var hvad der var mest optimal til min løsning dengang - måske en mulighed for dig også...
Avatar billede neteffect Nybegynder
19. juli 2002 - 17:24 #2
SELECT count(tblSvar.*) AS antalSvar, first(tblPoster.Post_ID) AS firstPostID, first(tblPoster.Post_Overskrift) AS firstPostOverskrift
FROM tblSvar INNER JOIN tblPoster ON tblSvar.Post_ID = tblPoster.Post_ID
GROUP BY firstPostID
ORDER BY firstPostOverskrift

...tror jeg nok. Jeg ville bygge og teste i Access, hvis jeg havde tabellerne. Og så skifte til SQl-view og snuppe koden, når det virkede.
Avatar billede Slettet bruger
20. juli 2002 - 02:12 #3
"SELECT tblMedlem.Medlem_ID, Medlem_Handle, tblPoster.Post_ID, Post_Dato, Post_Overskrift, (SELECT COUNT(*) FROM tblSvar WHERE tblSvar.Post_ID = tblPoster.Post_ID) AS AntalSvar FROM (tblMedlem INNER JOIN tblPoster ON tblMedlem.Medlem_ID = tblPoster.Medlem_ID), tblSvar WHERE Forum_ID = " & intBoardID & " GROUP BY tblMedlem.Medlem_ID, Medlem_Handle, tblPoster.Post_ID, Post_Dato, Post_Overskrift ORDER BY tblPoster.Post_Dato DESC;"

Tag DEN... hehehe.

neteffect: jeg fik mig nusset frem til ovenstående (som virker) dels ved hjælp af Access og siden hen ved noget "roden frem og tilbage". Det var dog dit indlæg, der fik mig "sparket i gang", så hvis du smider et svar, er der point som tak for hjælpen.
Avatar billede Slettet bruger
26. september 2002 - 02:08 #4
Nå... jammen så vil jeg lukke... takker endu en gang.
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
Kurser inden for grundlæggende programmering

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