Avatar billede scoty Nybegynder
21. februar 2007 - 14:55 Der er 10 kommentarer og
1 løsning

Hurtig SQL hjælp søges

Jeg mangler 3 SQL statements der skal gøre følgende:

Jeg har en tabel der hedder Deltagere.

Der indeholder 2 kolonner: Navn og Hold
Ex

Navn    Hold
xxx      2
yyy      4
ddd      19
.
.
.

Nu vil jeg gerne kunne udtrække følgende

En tabel der hedder xxx, som kan vise hvormange deltagere der er på  hold 1 til 20, noget i stil med:

HOLD Antal deltagere
1        3
2        4
3        0
.
.
.
20        1


Samt en tabel der hedder zzz
Hvor i man kan udtrække følgende data
HOLD      NAVNE
A          alle der er på hold 1 og 2
B          alle der er på hold 3 og 4
.
.
E          alle der er på hold 9 og 10..

Samt en tabel der hedder yyy
Hvor i man kan udtrække følgende data
HOLD      NAVNE
A          alle der er på hold 11 og 12
B          alle der er på hold 13 og 14
.
.
E          alle der er på hold 19 og 20..

Håber i forstår, hvad det er jeg mangler, ellers skriv lige.

På forhånd tak

//Scoty
Avatar billede jensen363 Forsker
21. februar 2007 - 15:01 #1
XXX

SELECT Tabel.Hold, Count(Tabel.Navn) AS [Antal deltagere]
FROM Tabel
GROUP BY Tabel.Hold;
Avatar billede jensen363 Forsker
21. februar 2007 - 15:04 #2
ZZZ

SELECT "A" AS Hold, Tabel.Navn
FROM Tabel
WHERE (((Tabel.Hold)=1)) OR (((Tabel.Hold)=2));
UNION
SELECT "B" AS Hold, Tabel.Navn
FROM Tabel
WHERE (((Tabel.Hold)=3)) OR (((Tabel.Hold)=4));
Avatar billede jensen363 Forsker
21. februar 2007 - 15:13 #3
YYY er efter samme princip som ZZZ
Avatar billede scoty Nybegynder
21. februar 2007 - 15:20 #4
Når jeg smider ZZZ ind i DB. og kører den som en forspørgelse bliver jeg promtet for to ting:

Tabel.navn og Tabel.hold ... hvad skal jeg bruge disse til og hvad skal værdien være?
Avatar billede scoty Nybegynder
21. februar 2007 - 15:21 #5
Min Fejl... SORRY.. havde skrevet forkert ved tabelnavnet.
Avatar billede scoty Nybegynder
21. februar 2007 - 15:22 #6
Tak for hjælpen smider du ikke et svar
Avatar billede jensen363 Forsker
21. februar 2007 - 15:23 #7
Sorry ...

Tabel er i dit tilfælde Deltagere

Dvs :

SELECT "A" AS Hold, Deltagere.Navn
FROM Deltagere
WHERE (((Deltagere.Hold)=1)) OR (((Deltagere.Hold)=2));
UNION
SELECT "B" AS Hold, Deltagere.Navn
FROM Deltagere
WHERE (((Deltagere.Hold)=3)) OR (((Deltagere.Hold)=4));
Avatar billede jensen363 Forsker
21. februar 2007 - 15:23 #8
Svar :-)
Avatar billede scoty Nybegynder
21. februar 2007 - 15:27 #9
Takker endnu engang.
Avatar billede jensen363 Forsker
21. februar 2007 - 15:28 #10
Velbekommen
Avatar billede kjulius Novice
22. februar 2007 - 02:13 #11
Da det jo er Access, har man også mulighed for at trække på alle VBA funktionerne, så som CHR og ASC, så hvis du ikke regner med at skulle portere det til en anden database på et tidspunkt kunne det også gøres med:

zzz:
SELECT CHR(ASC('A') + INT((INT((Hold +1) / 2) * 2 - 2) / 2)) AS SammensatHold, Deltager
FROM Deltagere
WHERE Hold BETWEEN 1 AND 10
ORDER BY INT((Hold +1) / 2) * 2, Deltager


yyy:
SELECT CHR(ASC('A') + INT((INT((Hold +1) / 2) * 2 - 12) / 2)) AS SammensatHold, Deltager
FROM Deltagere
WHERE Hold BETWEEN 11 AND 20
ORDER BY INT((Hold +1) / 2) * 2, Deltager
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