WHERE ... AND ... OR - Frage
Lavender
- datenbank
0 wahsaga0 Rouven0 Danke
Lavender
Hallo zusammen,
ich habe folgenden Befehl:
SELECT Nr, Titel, Kat
FROM page
WHERE TextA LIKE '%test%'
AND Activator = 'activ'
OR TextB LIKE '%test%'
AND Activator = 'activ'
ORDER BY Titel ASC
muss ich das zweite AND Activator = 'activ' mit reinsetzen, oder reicht dieser Befehl (in beiden - TextA und TextB - muss Activator "activ" sein):
SELECT Nr, Titel, Kat
FROM page
WHERE Activator = 'activ'
AND TextA LIKE '%test%'
OR TextB LIKE '%test%'
ORDER BY Titel ASC
Danke im Voraus.
Gruß
Lavender
hi,
WHERE Activator = 'activ'
AND TextA LIKE '%test%'
OR TextB LIKE '%test%'
Das selektiert alle Datensätze, in denen Activator='activ' ist UND TextA 'test' enthält - oder in denen auch nur TextB 'test' enthält.
(in beiden - TextA und TextB - muss Activator "activ" sein)
Vielleicht möchtest du ein paar Klammern setzen.
gruß,
wahsaga
Hi,
muss ich das zweite AND Activator = 'activ' mit reinsetzen, oder reicht dieser Befehl (in beiden - TextA und TextB - muss Activator "activ" sein):
das ist eine Frage der Klammerung. In aller Regel ist die Operatorrangfolge NOT-AND-OR, d.h. das AND bindet stärker als OR:
x AND y OR z -> Es müssen x und y gelten, oder eben z
In deinem Fall 1 funktioniert also alles richtig, du wählst einen der beiden Fälle aus. Deine verkürzte Variante 2 liefert nicht das gewünschte Ergebnis, das sie Sätze liefert die (activ+TextA) oder TextB haben. Eine Klammerung hingegen rückt alles wieder ins richtige Licht:
WHERE Activator'activ'
AND (TextA LIKE '%test%' OR TextB LIKE '%test%')
MfG
Rouven
Danke euch beiden - jetzt gehts einwandfrei.
Viele Grüße
Lavender