Select-Anfrage ignoriert Bedingungen
Nick
- datenbank
2 ChrisB2 Christoph Jeschke0 Nick
Hallo,
ich habe eine Tabelle mit Kundendaten und möchte den Namen und das Land unter folgenden Bedingungen ausgeben:
1.) Im Feld "aktiv" muss "ja" stehen
2.) Im Feld "land" muss "Österreich" stehen
3.) Im Feld "Rubrik1" bis "Rubrik6" muss mindestens einmal "49" stehen
Meine Select-Anweisung sieht folgendermaßen aus:
SELECT vorname, name, land
FROM Inserenten
WHERE land = "Österreich"
AND aktiv = "ja"
AND rubrik1 = "49"
OR rubrik2 = "49"
OR rubrik3 = "49"
OR rubrik4 = "49"
OR rubrik5 = "49"
OR rubrik6 = "49"
Wenn ich diese Anweisung ausführe werden jedoch ALLE Kunden (Auch aus anderen Ländern) ausgegeben, die in den Rubriken eine "49" stehen haben.
Wo ist der Fehler bzw. wie sieht die Lösung aus?
Gruß Nick
Hi,
WHERE land = "Österreich"
AND aktiv = "ja"
AND rubrik1 = "49"
OR rubrik2 = "49"
OR rubrik3 = "49"
OR rubrik4 = "49"
OR rubrik5 = "49"
OR rubrik6 = "49"Wenn ich diese Anweisung ausführe werden jedoch ALLE Kunden (Auch aus anderen Ländern) ausgegeben, die in den Rubriken eine "49" stehen haben.
Wo ist der Fehler
Ganz elementare Regel der Aussagenlogik: AND bindet staerker als OR.
bzw. wie sieht die Lösung aus?
Klammerung.
MfG ChrisB
Guten Tag,
SELECT vorname, name, land
FROM Inserenten
WHERE land = "Österreich"
AND aktiv = "ja"
AND rubrik1 = "49"
OR rubrik2 = "49"
OR rubrik3 = "49"
OR rubrik4 = "49"
OR rubrik5 = "49"
OR rubrik6 = "49"
Wo ist der Fehler bzw. wie sieht die Lösung aus?
Tatsächlich fragst du, folgendes:
Selektiere die Länder, die entweder folgende Attribute haben:
- land = Österreich,
- aktiv = ja, und
- rubrik1 = 49
Oder:
- rubrik2 = 49
Oder:
- rubrik3 = 49
etc. haben.
Du willst jedoch:
- land = Österreich
- aktiv = ja
- rubrik1 = 49 oder rubrik2 = 49 ... haben.
Tipp: Klammere deine Ausdrücke, wie du es auch bei einem mathematischen Term machen würdest.
Gruß
Christoph Jeschke
Danke für die Ausführliche erklärung - so kann man es auch gut nachvollziehen.
Gruß
Nick