Avatar billede kovalt Nybegynder
05. juli 2003 - 13:53 Der er 15 kommentarer og
1 løsning

tælle i subquery

Hej

Jeg har en tabel, der indeholder en række oplysninger omkring nogle fodboldhold. En anden tabel indeholder oplysninger om de kampe disse hold har spillet. Det jeg ønsker er et udtræk, der fortæller hvor mange kampe de enkelte hold har spiller, hvor der ikke er scoret imod dem eller sagt med andre ord - scoren for modstanderen er lig 0.

Jeg har følgende:

SELECT hjemmenr, genhomefor, (SELECT COUNT(awayscore) FROM query_match WHERE awayscore = 0)
FROM stats_home

hvilket giver mig en liste over alle hjemmehold (hjemmeNr) - men subqueryen giver det samme tal for alle hold.

Hvorledes skal min where-sætning se ud?

/kovalt
Avatar billede hekla Nybegynder
05. juli 2003 - 14:10 #1
Prøv med:

SELECT hjemmenr, genhomefor, (SELECT COUNT * FROM query_match WHERE awayscore = 0)
FROM stats_home
Avatar billede hekla Nybegynder
05. juli 2003 - 14:10 #2
Det var et svar
Avatar billede hiks Nybegynder
05. juli 2003 - 14:15 #3
hva med en omgang group by istedet???

SELECT hjemmenr, COUNT(awayscore) as kampe FROM stats_home GROUP BY hjemmenr HAVING awayscore = 0;

forudsat at hjemmenr er holdets unikke nr.

/hiks
Avatar billede hekla Nybegynder
05. juli 2003 - 14:17 #4
Mit svar et vist ikke helt rigtigt, men du kan lave det vha guiden i Access:

Lav en ny forespørgsel i designvisning
Vælg dine tabeller
vælg de felter, som du skal bruge
Vælg "Totaler" i værktøjslinien øverst.
Vælg "Antal" for f.eks. kampnummer eller et andet unikt felt
Vælg "Grupper efter" for hjemmehold
skriv "0" i kriterier under awayscore

Så skulle den være der.
Avatar billede hiks Nybegynder
05. juli 2003 - 14:24 #5
- og så får man den sql jeg skrev... :o)

/hiks
Avatar billede kovalt Nybegynder
05. juli 2003 - 15:37 #6
hiks --> min awayscore ligger ikke i samme tabel. Det skal hentes fra en anden tabel - så der skal på en eller anden måde indbygges en subquery der:

select COUNT(*) from query_match where homescore = 0
Avatar billede kovalt Nybegynder
05. juli 2003 - 15:41 #7
Jeg har en tabel med alle holdene (som skal fungere som overordnet gennemløbstabel) og en tabel som indeholder alle de kampe, der er spillet.

Jeg har brug for en lister over ALLE hold og hvor mange kampe de har spiller hvor modstanderen ikke har scoret
Avatar billede hekla Nybegynder
05. juli 2003 - 18:53 #8
Denne her virker.

hold: tabellen med holdnavnene.
ID(Autonummerering)
holdnavn(tekst)

Kampe: Tabellen med kampe.
Kampnummer(tekst)
hjemmehold(tal)
Score-udehold(tal)

SELECT Count(Kampe.Kampnummer) AS AntalOfKampnummer, hold.holdnavn
FROM Kampe INNER JOIN hold ON Kampe.hjemmehold = hold.ID
GROUP BY hold.holdnavn, Kampe.[Score-udehold]
HAVING (((Kampe.[Score-udehold])=0));


Du kan selv tilpasse den til dine tabel- og felt-navne
Avatar billede kovalt Nybegynder
07. juli 2003 - 23:02 #9
undskyld det sene svar...

problemet med ovenstående er at den kun udskrive, dem der ikke er score imod og altså ikke alle dem som der altid er scoret imod...

der skal noget ind med at hvis Count() = 0 så skal den ikke springe den over men udskrive 0

hvis det giver mening :-)

/kovalt
Avatar billede hekla Nybegynder
07. juli 2003 - 23:32 #10
Du skriver:

Det jeg ønsker er et udtræk, der fortæller hvor mange kampe de enkelte hold har spiller, hvor der ikke er scoret imod dem eller sagt med andre ord - scoren for modstanderen er lig 0.

!!!!!
Avatar billede kovalt Nybegynder
08. juli 2003 - 12:08 #11
Ja!!

Der er nul kampe vel også en mulighed eller?
Avatar billede hiks Nybegynder
08. juli 2003 - 14:22 #12
så kan du vel i stedet for den inner join som hekla foreslår lave en outer left og sortere det ud i din kode vha. en if sætning.

/hiks
Avatar billede hekla Nybegynder
11. juli 2003 - 10:44 #13
kovalt>> Har du fået det til at virke?
Avatar billede kovalt Nybegynder
17. juli 2003 - 13:08 #14
jeg endte med at lave det i to queries i stedet.... blev monster træt af det :-)

was mit ze points
Avatar billede Jørgen Kirkegaard Professor
26. juli 2003 - 16:37 #15
15 til hver
Avatar billede kovalt Nybegynder
02. august 2003 - 11:49 #16
smid et
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