Avatar billede oasen Nybegynder
02. december 2002 - 18:47 Der er 5 kommentarer og
1 løsning

En enkelt SQL

Select Count(responstab.IntroID) As Antal, introtab.IntroID, introtab.Dato, introtab.Overskrift, introtab.Forfatter
From introtab Left Join responstab On introtab.IntroID = responstab.IntroID
Where responstab.Forfatter = 'Kurt'
Group By introtab.IntroID, introtab.Dato, introtab.Overskrift, introtab.Forfatter
Order By introtab.IntroID Desc"


Count(responstab.IntroID) returnerer logisk nok kun antallet af Kurts forekomster ved hvert IntroID, men jeg skal have det samlede antal forekomster af hvert IntroID fra responstab, hvor IntroID og Kurt på et tidspunkt står ud for hinanden.

Eks.

IntroID Forfatter

...1... Benny
...2... Kurt
...2... Bjarne
...2... Kurt
...3... John
...4... Ole

Her skal Count(responstab.IntroID) returnere antallet 3.

Var det til at forstå?
Avatar billede eagleeye Praktikant
02. december 2002 - 18:55 #1
Kurt er kun i listen en gang og ligger amn IntroID sammen ud fra kurt giver det 4 så jeg er ikke helt med?
Avatar billede oasen Nybegynder
02. december 2002 - 20:04 #2
Det kan jeg godt forstå du ikke er. Det er nok også dårligt forklaret...

Kurt står ud for IntroID nr. 2, men antallet af nr. 2's forekomster er 3 (det skal ikke summeres).

Derfor skal "Antal" returnere tallet 3, mens IntroID skal returnere tallet 2.
Det er et led i et debatforum. Og hvis Kurt gerne vil se de spørgsmål, han deltager i, skal han kunne se, hvor mange indlæg der er i alt i tråden - og ikke kun hvor mange gange, han selv har lavet indlæg.
Avatar billede eagleeye Praktikant
03. december 2002 - 09:58 #3
Så skal SQL laves om for nu vælger den kun IntroID hvor ForFatter er lig kurt. Men den skal så tælle alle IntroID også selvom forfatter ikke er lig kurt.


Prøv med denne, men jeg er ikke sikker på det viker men det bliver noget i stil med det hvor den vælger IntroID hvor forfatter er lig kurt og så tæller antal af IntoID:


Select Count(responstab.IntroID) As Antal, introtab.IntroID, introtab.Dato, introtab.Overskrift, introtab.Forfatter
From introtab Left Join responstab On introtab.IntroID = responstab.IntroID
Where responstab.IntroID = ((SELECT distinct responstab.IntroID FROM responstab WHERE responstab.Forfatter = 'Kurt')) 
Group By introtab.IntroID, introtab.Dato, introtab.Overskrift, introtab.Forfatter
Order By introtab.IntroID Desc"
Avatar billede oasen Nybegynder
03. december 2002 - 21:00 #4
Ja, men dit subquery returnerer mere end ét IntroID. "Kurt" kan stå ud for flere ID-numre. Så jeg ved ikke, hvad der kan gøres...
Avatar billede eagleeye Praktikant
04. december 2002 - 09:47 #5
Så tror jeg ikke umiddelbart det kan laves i en SQL. Ja den vil medtage alle de steder hvor Kurt deltager...

Jeg tror ikke umiddelbart det kan laves i en SQL med mindre du kender IntroID på forhånd og laver en count..:

Select Count(responstab.IntroID) As Antal
From responstab
Where responstab.IntroID = 2;
Avatar billede oasen Nybegynder
04. december 2002 - 11:59 #6
Så må jeg jo næsten løbe det hele igennem 2 gange, hvor jeg først tæller og dernæst henter data...

Tak for interessen :)
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