Avatar billede scoty Nybegynder
22. februar 2007 - 10:55 Der er 11 kommentarer og
2 løsninger

Hurtig SQL hjælp søges

Jeg har 2 forespørgelser:

1)

SELECT *
FROM xxx
ORDER BY Navn;


2)

SELECT "A" AS Hold, xxx.Navn
FROM xxx
WHERE (((xxx.Hold)='1E')) OR (((xxx.Hold)='2E')) OR (((xxx.Hold)='1F')) OR (((xxx.Hold)='2F'));
UNION SELECT "B" AS Hold, xxx.Navn
FROM xxx
WHERE (((xxx.Hold)='3E')) OR (((xxx.Hold)='4E')) OR (((xxx.Hold)='3F')) OR (((xxx.Hold)='4F'));
UNION SELECT "C" AS Hold, xxx.Navn
FROM xxx
WHERE (((xxx.Hold)='5E')) OR (((xxx.Hold)='6E')) OR (((xxx.Hold)='5F')) OR (((xxx.Hold)='6F'));
UNION SELECT "D" AS Hold, xxx.Navn
FROM xxx
WHERE (((xxx.Hold)='7E')) OR (((xxx.Hold)='8E')) OR (((xxx.Hold)='7F')) OR (((xxx.Hold)='8F'));
UNION SELECT "E" AS Hold, xxx.Navn
FROM xxx
WHERE (((xxx.Hold)='9E')) OR (((xxx.Hold)='10E')) OR (((xxx.Hold)='9F')) OR (((xxx.Hold)='10F'));

og tabel xxx ser ud som følgende:
Navn (Teskt)
Hold (Tekst)
Mødt (Tekst)
Afregnet (Tekst)


Nu vil jeg gerne i den første forespørgelse have inkluderet således at der kommer til at stå om man er på A,B,C,D eller E.

Så den kommer ud med data der ser sådan her ud:
Navn    Hold    Mødt  Afregnet  Stort hold
person1  1E                          A
person2  2E                          A
person3  4F                          C

Jeg kan ikke gemmenskue om der skal sammenlignes navn eller noget.. Det kan også være at de 2 forespørgelser skal slåes sammen.

Håber i forstår, ellers må i spørge ind :)
Avatar billede Slettet bruger
22. februar 2007 - 11:23 #1
Jeg har ikke testet det.

Jeg går ud fra, du bruger access.. På MySQL skal IIF erstattes med IF.

SELECT *, IIF(
    Hold IN ('1E','2E','1F','2F'),"A",IIF(
        Hold IN ('3E','4E','3F','4F'),"B",IIF(
            Hold IN ('5E','6E','5F','6F'),"C",IIF(
                Hold IN ('7E','8E','7F','8F'),"D",IIF(
                    Hold IN ('9E','10E','9F','10F'),"E",""
                )
            )
        )
    )
) AS Stort_hold FROM xxx ORDER BY Navn

/1
Avatar billede jensen363 Forsker
22. februar 2007 - 11:25 #2
SELECT zzz.Navn, xxx.Hold, xxx.Afregnet, [zzz]![Hold] AS [Stort hold]
FROM xxx INNER JOIN zzz ON xxx.Navn = zzz.Navn;
Avatar billede jensen363 Forsker
22. februar 2007 - 11:27 #3
zzz svarer til din UNION forespørgsel
Avatar billede scoty Nybegynder
22. februar 2007 - 11:34 #4
smider du ikke et svar: kvadratrodenaf1

det virkede nemlig
Avatar billede jensen363 Forsker
22. februar 2007 - 11:38 #5
Scoty > Vær opmærksom på, at løsningen som du vælger ( kvadratroden ), vil kræve at du skal vedligeholde to forespørgsler hvis der kommer nye holdnumre til ...

... bare til orientering
Avatar billede scoty Nybegynder
22. februar 2007 - 11:50 #6
tak for den jensen363... jeg er ikke sikker på hvad du mener...

hvis der nu kommer en ny person til og får tildelt et eksisterende nummer altså 1E, 1F også videre virker det så ikke ???

Jeg har ikke valgt din da jeg ikke er sikker på hvad jeg skal skrive på der hvor der står zzz

/scoty
Avatar billede jensen363 Forsker
22. februar 2007 - 12:03 #7
zzz = den forespørgsel der er nævnt under pkt. 2)

Nye personer vil ikke give problemer, men hvis du beslutter at oprette nye hold, det være sig enkelthold og samling i nye store hold, eksempelvis

    11E, 12E, 11F, 12F om skal samles på stort hold F

så skal du regigere både den forespørgsel nævnt under pkt. 2) og den forespørgsel der er foreslået af kvadratroden

Min løsning bygger videre på din eksisterende løsning
Avatar billede scoty Nybegynder
22. februar 2007 - 12:19 #8
jamen hvis du så også byder ind med at svar, så deler jeg point imellem jer :)
Avatar billede jensen363 Forsker
22. februar 2007 - 12:29 #9
Det var nu ikke derfor ... det var mere ment som en serviceinformation.
Avatar billede Slettet bruger
22. februar 2007 - 12:43 #10
Min løsning erstatter og forsimpler løsning 2 samtidig med at hente alle felter i tabellen..

Desuden performer den bedre, da der ikke er brug for unions og where.

/1.
Avatar billede scoty Nybegynder
22. februar 2007 - 13:12 #11
Jeg kan desværre ikke vurdere hvilken løsning der er bedst da, jeg ikke er så meget inde i SQL sproget mere.. Så jeg deler point.. Håber i acceptere dette.
Avatar billede jensen363 Forsker
22. februar 2007 - 13:15 #12
No Problem herfra
Avatar billede Slettet bruger
22. februar 2007 - 19:17 #13
Heller ikke her fra :P.. Ha en god weekend, når i når så langt..
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