Avatar billede kovalt Nybegynder
30. juli 2003 - 15:34 Der er 10 kommentarer og
1 løsning

COUNT på tre tabeller

Hej

  Jeg har en tabel, der indeholder oplysninger omkring en afstemning. Stemmen kan være henholdsvis ja, nej, ved ikke. Herudover findes i tabellen et afstemningsNr, som naturligvis indikere, hvilken afstemning en given stemme tilhører.

  Jeg vil nu gerna ha lavet en query, som tæller henholdsvis alle ja, nej og ved ikke-stemmer på og grupperer den efter afstemningsnumerret.

  Jeg har fundet frem til følgedende og så vidt jeg kan se er det kun et spørgsmål om at der mangler en WHERE klausul - men hvilken :-)

SELECT afstemningNr, COUNT(jastemme.stemme) AS antalJa, COUNT( nejstemme.stemme) AS antalNej, COUNT( vedikke.stemme) AS antalVedikke
FROM (SELECT afstemningNr, stemme FROM afstemningVotes WHERE stemme = 'ja') AS jastemme, (SELECT stemme FROM afstemningVotes WHERE stemme = 'nej') AS nejstemme, (SELECT stemme FROM afstemningVotes WHERE stemme = 'nej') AS vedikkestemme

/kovalt
GROUP BY afstemningNr
Avatar billede kovalt Nybegynder
30. juli 2003 - 15:42 #1
skulle måske lige sige at den tabel hvori afstemningerne ligger i indeholder en kolonne med et nummer, der er nøgle
Avatar billede overchord Nybegynder
30. juli 2003 - 15:52 #2
hvis du bruger query-byggeren bliver livet lidt nemmere i dette tilfaelde

Felt 1: Stemme
Felt 2: Stemme (igen)

Tryk paa grupperingsknappen (sumtegn)
Valeg grupper efter/sort by for foerste felt
Vaelg count for andet felt
Avatar billede kovalt Nybegynder
30. juli 2003 - 16:10 #3
Den er jeg ikke lige helt sikker på at jeg fanger..... jeg kan i  hvert fald ikke få det til at virke
Avatar billede overchord Nybegynder
30. juli 2003 - 17:20 #4
OK jeg har oversat det til sql herunder:
SELECT stemme.stemme, Count(stemme.stemme) AS CountOfstemme
FROM stemme
GROUP BY stemme.stemme;
Avatar billede overchord Nybegynder
30. juli 2003 - 17:22 #5
Men ok, den skal ogsaa grupperes efter afstemningsnummer, saa det er inlkuderet herunder :

SELECT stemmefstemningsnr, stemme.stemme, Count(stemme.stemme) AS CountOfstemme
FROM stemme
GROUP BY stemme.Afstemningsnr, stemme.stemme;
Avatar billede overchord Nybegynder
30. juli 2003 - 17:37 #6
sorry er lidt langsom idag. Jeg havde ikke set at det var tre separate tabeller.
For at goere det paa den maade har jeg oprettet en fjerde tabel (jeg ville egentligt have holdt alt i en tabel istedet, men nu hvor vi arbejder med dit eksempel....) Den fjerde tabel er ganske simpel alle afstemningsnumre.

SELECT Afstemningsnumre.Afstemningsnummer, Count(jastemmer.afstemningsnr) AS CountOfafstemningsnr, Count(nejstemmer.afstemningsnr) AS CountOfafstemningsnr1, Count(vedikke.afstemningsnr) AS CountOfafstemningsnr2
FROM ((Afstemningsnumre LEFT JOIN jastemmer ON Afstemningsnumre.Afstemningsnummer = jastemmer.afstemningsnr) LEFT JOIN nejstemmer ON Afstemningsnumre.Afstemningsnummer = nejstemmer.afstemningsnr) LEFT JOIN vedikke ON Afstemningsnumre.Afstemningsnummer = vedikke.afstemningsnr
GROUP BY Afstemningsnumre.Afstemningsnummer;
Avatar billede kovalt Nybegynder
30. juli 2003 - 21:10 #7
Jeg tror vi snakker lidt forbi hinanden.

Jeg har én tabel som indeholder

nr (fungere som nøgle)
afstemningsnr(angiver hvilken afstemning stemmer hører til)
stemme (kan enten være ja, nej eller ved ikke)


Det jeg gerne vil er, at få en liste query ude med følgende indhold:

afstemningsnr (ex. 1), antalJa(ex. 7 (for 7 ja stemmer)), antalNej, antalVedIkke

/kovalt
Avatar billede kovalt Nybegynder
30. juli 2003 - 21:15 #8
SELECT afstemningNr, COUNT(nr)
FROM afstemningVotes
WHERE stemme='ja'
GROUP BY afstemningNr

Dette giver det rigtige men kun for alle ja-stemmer.... så skal nej-stemmer og ved-ikke-stemmer bare kobles på
Avatar billede overchord Nybegynder
30. juli 2003 - 23:55 #9
SELECT stemmefstemningsnr, stemme.stemme, Count(stemme.stemme) AS CountOfstemme
FROM stemme
GROUP BY stemme.Afstemningsnr, stemme.stemme;
Avatar billede proaccess Nybegynder
31. juli 2003 - 07:51 #10
Hvis du vil have følgende resultat kan nedenstående bruges:

Afstemningsnr  AntalJa  AntalNej  AntalVedIkke
  1                7          5              10
  2                6          2              14

SELECT afstemningsnr, Sum(IIf(stemme='ja', 1, 0)) AS AntalJa, Sum(IIf(stemme='nej', 1, 0)) AS AntalNej, Sum(IIf(stemme='ved ikke')) AS AntalVedIkke FROM afstemningVotes GROUP BY afstemningsnr;
Avatar billede kovalt Nybegynder
02. august 2003 - 11:52 #11
1000 tak proAccess
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