21. februar 2007 - 14:55Der 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.
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));
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));
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
Synes godt om
Ny brugerNybegynder
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.