Avatar billede radiv Nybegynder
09. september 2004 - 14:04 Der er 3 kommentarer og
1 løsning

Select fra flere tabeller i en database

Jeg har en database med 3 tabeller,

spillere (spillerID,fornavn,efternavn,fødselsdato)
aktiviteter (aktivitetsID, aktivitetsDato,varighed,beskrivelse)
deltagning (aktivitetsID,spillerID)

ID fungerer som primary key, i deltagning er det en sammensat key.

Det jeg vil er at hente en oversigt over hver enkelt aktivitet, med følgende kolonner:

|aktivitetsDato|beskrivelse|varighed|beskrivelse|antal spillere|antal spillere mellem 18-24 år|antal spillere mellem 5-17 år|

Jeg har views som finder spillere i aldersgruppene, så de skal bare tælles.

Jeg har forsøgt:

SELECT a.aktivitetsDato AS 'Dato', beskrivelse AS 'Beskrivelse', varighed AS 'Antal timer', COUNT(distinct d.spillerID) AS 'Antal deltagere', COUNT(distinct v.spillerID) AS 'Antal 18-24', COUNT(distinct v2.spillerID) AS 'Antal 5-17'

FROM aktiviteter a, deltagning d, spillere1824 v, spillere517 v2

WHERE
a.aktivitetsID = d.aktivitetsID AND
a.aktivitetsID = v.aktivitetsID AND
a.aktivitetsID = v2.aktivitetsID

GROUP BY aktivitetsDato, beskrivelse, varighed ORDER BY 1

Problemet er så at jeg kun ser de aktiviteter der det er deltagere i alle aldersgrupper. Jeg ønsker at se alle aktiviteter, også dem uden deltagere.
Avatar billede kneth Nybegynder
09. september 2004 - 14:12 #1
Det lyder som om du skal lave et 'left join'. Det du har lavet der svarer til et almindeligt join, dvs. du får kun rækkerne, hvor ingen af felterne er NULL. Med et left join alle rækkerne fra den venstre tabel også selvom der er NULL-felter i rækkerne i den højre tabel

Det gav vist ikke meget mening, men jeg orker ikke at skrive det om ;)
Avatar billede arne_v Ekspert
09. september 2004 - 14:13 #2
Umiddelbart tror jeg bare at du skal skifte fra INNER JOIN til LEFT JOIN:

...
FROM aktiviteter a LEFT JOIN deltagning d ON a.aktivitetsID = d.aktivitetsID
LEFT JOIN spillere1824 v ON a.aktivitetsID = v.aktivitetsID
LEFT JOIN spillere517 v2  ON a.aktivitetsID = v2.aktivitetsID
...
Avatar billede radiv Nybegynder
09. september 2004 - 14:28 #3
Lækkert, cut and paste, og det fungerer!

Kneth: det giver absolut mening, men med arne_v's komplette svar, får han pointene.
Avatar billede arne_v Ekspert
09. september 2004 - 14:31 #4
så ligger jeg et svar
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
Computerworld tilbyder specialiserede kurser i database-management

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



Seneste spørgsmål Seneste aktivitet
I går 17:10 Joomla artikler Af rmadsen80 i CMS-systemer
I går 16:54 Printervalg til kontor Af tumben i Printere
I går 15:08 Http client med X509Certificate2 Af joki i C#
I går 13:02 Hjemmenetværk Af Andfer i LAN/WAN
I går 11:17 Chrombook Af lurup i Andre styresystemer