Avatar billede mini-me Nybegynder
09. august 2007 - 10:44 Der er 8 kommentarer og
1 løsning

Fejl i SQL streng

Hej,

Jeg har problemer med min SQL streng:

SELECT * From BookingItems where omrade <> '' and hjemmeside=0 or hjemmeside=1 AND antalPersons >='2' AND allergivenlig = true order by int(BureauHusNr) asc


allergivenlig = true burde give mig søgeresultater hvor allergivenlig kun er true, men jeg får alle emner frem.
Avatar billede ffsoft Praktikant
09. august 2007 - 11:48 #1
Du har en OR betingelse inde.

Prøv at køre

SELECT * From BookingItems where hjemmeside=1 AND antalPersons >='2' AND allergivenlig = true order by int(BureauHusNr) asc

hvis ellers allergivenlig er et ja/nej felt skal du kun kunne se de
allergivenlige.
Avatar billede mini-me Nybegynder
09. august 2007 - 11:55 #2
ja men den skal tage både hjemmeside=0 og hjemmeside=1
Avatar billede thesurfer Nybegynder
09. august 2007 - 12:18 #3
Sådan:

and (hjemmeside=0 or hjemmeside=1) AND
Avatar billede thesurfer Nybegynder
09. august 2007 - 12:20 #4
Der er forskel på med paranteser og uden.. så husk at sætte paranteserne rigtigt..

Hvis allergivenlig = true er den vigtigste, ville jeg måske sætte de andre i paranteser..
Avatar billede plx Nybegynder
09. august 2007 - 15:00 #5
Det er ligesom i regning. OR er plus, og AND er gange. OR deler sætnignen op i led:

omrade <> '' and hjemmeside=0

or

hjemmeside=1 AND antalPersons >='2' AND allergivenlig = true

-- blot et af de to led skal være sandt. Hvis opdelingen skal være anderledes, skal du rigtig nok bruge parenteser
Avatar billede thesurfer Nybegynder
09. august 2007 - 20:17 #6
Alternativt kan man bruge IN..

Eksempel: and hjemmeside in(0,1)

Jeg er ikke helt sikker, men mener at Access understøtter IN..
Avatar billede nielle Nybegynder
09. august 2007 - 20:53 #7
>> OR er plus, og AND er gange.

Det er nu den anden vej rundt :^=
Avatar billede plx Nybegynder
10. august 2007 - 00:16 #8
nej. OR har altid været plus, og AND altid gange :)
Avatar billede nielle Nybegynder
10. august 2007 - 08:52 #9
Well, vi tager faktisk begge to fejl.

Lad os f.eks. tage den distibutive lov, som er den regel der virkeligt adskiller miellem adfærden af + og *. Den siger at der gælder at:

a * (b + c) = a*b + a*c

Den gælder bare ikke, hvis vi bytter om på + og *:

a + (b * c) != a+b * a+c


For boolske udtryk har vi en lignende regel:

a OR (b AND C) = (a OR b) AND (a OR c)

men den gælder *også* når vi bytter om på de to operatore:

a AND (b OR c) = (a AND b) OR (a AND c)

Vi kan derfor ikke sige at den ene boolske operator er mere "plus-agtig" eller "gange-agtig" end den anden.

:^)
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