webForumDet fria alternativet

OR i WHERE

4 svar · 264 visningar · startad av i-or

i-orMedlem sedan nov. 2001294 inlägg
#1

Säg att jag har en SQl-sats som ser ut som följande:

SQL = "SELECT * FROM Tabell WHERE a = 1 AND b = 2 OR c = 3"

Jag vill att denna rad ska generera alla poster där a = 1 och b = 2 eller a = 1 och c = 3. Alltså måste uttrycket a = 1 stämma för att posten ska genereras. Och sedan ska antingen b = 2 eller c = 3 stämma. Jag har försökt med att sätta en parantes runt b = 2 OR c = 3, men då behöver inte a = 1 stämma för posterna där c = 3. Måste jag skriva: a = 1 AND b = 2 OR a = 1 AND c = 3 för att få det hela att stämma eller kan jag på något sätt göra att jag slipper skriva a = 1 mer än en gång?

Hoppas att jag inte virrade till det alldeles för mycket utan att någon förstår.

@ndersMedlem sedan juni 200032 969 inlägg
#2

Du får lägga in en parentes som grupperar OR-fälten i frågan.

SQL = "SELECT * FROM Tabell WHERE a = 1 AND (b = 2 OR c = 3)"

Mvh,

i-orMedlem sedan nov. 2001294 inlägg
#3

Jo, det vet jag (gjorde visst ett för enkelt exempel). Det riktiga exemplet var lite mer komplicerat:

SQL = "SELECT * FROM Tabell WHERE a = 1 AND (b = 2 AND c = 3) OR (d = 4 AND e = 5)"

Detta fungerar inte som jag vill. Alltså ska a, b och c stämma eller ska a, d och e stämma.

@ndersMedlem sedan juni 200032 969 inlägg
#4

Då får vi lägga till en till parentes:

SQL = "SELECT * FROM Tabell WHERE a = 1 AND ((b = 2 AND c = 3) OR (d = 4 AND e = 5))"

Mvh,

i-orMedlem sedan nov. 2001294 inlägg
#5

Oj, nu skäms jag. Var det inte svårare? :(

Tack ändå!!

125 ms totalt · 3 externa anrop · v20260731065814-full.2b84b982
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
123 ms — hämta tråd, inlägg och bilagor (db)