Nick: Select-Anfrage ignoriert Bedingungen

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

  1. 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

    --
    „This is the author's opinion, not necessarily that of Starbucks.“
  2. 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

    --
    Zend Certified Engineer
    Certified Urchin Admin
    1. Danke für die Ausführliche erklärung - so kann man es auch gut nachvollziehen.

      Gruß

      Nick