SQL GELÖST: SQL Befehl - UPDATE, WHER, AND, OR

THOMASBAUER.cc

Cadet 4th Year
Registriert
Aug. 2007
Beiträge
86
Hallo,

Ich komme bei folgendem SQL-Befehl auf keine Lösung

UPDATE ngie_jreviews_content

SET jr_datum2021 = '2021-01-06 00:00:00',

jr_termin2021offen = 'ja'

WHERE jr_datum2021 = '0000-00-00*'

AND jr_datum2020 = '2020-01-06*'

AND jr_land = 'deutschland' OR = 'schweiz' OR 'österreich';
1584871662950.gif


Die letzte Zeile macht mir Probleme. Ich möchte das alle Zellen berücksichtigt werden, die zumindest eines der drei Länder beinhalten (sofern natürlich die vorherigen Voraussetzungen erfüllt sind). Nur funktioniert das irgendwie mit OR nicht. In diesem Fall nimmt er nur alle Zellen mit Deutschland bzw. immer dem Land das als erstes angeführt ist.

Also sagen wir in Deutschland wären es 20 in der Schweiz 10 und in Österreich fünf, dann würden nur 20 Zellen aktualisiert. Stünde Österreich ganz vorne, würden nur diese 5 Zellen aktualisiert. Wie schaffe ich es das alle 35 aktualisiert werden?

LG
Ergänzung ()

EDIT: Sorry, schon geschafft
AND (jr_land = 'österreich' OR jr_land = 'schweiz' OR jr_land = 'deutschland');
 
Das ist weniger ein SQL als ein Logikproblem.

A & B | C ist, so ohne Klammern, immer in Problem, egal wo man hingeht. Im Zweifel wird von links nach rechts gearbeitet, aber darauf sollte man sich nicht verlassen - mit Pech bindet irgendwo | stärker als & und dann hat man den Salat.

Wenn man nicht aufpaßt, hat man auch bei Intervallen das Problem und insbesondere wenn nicht klar ist, daß das logische ODER ( | ) sich von dem "natürlichen" "oder" unterscheidet, da nicht exclusiv.

Beispiel:
0 < a | a < 1
Eventuell erwartet: Alle a zwischen 0 und 1 (exklusiv)
Tatsächliches Ergebnis ist aber, daß es keine Einschränkung gibt (Tautologie):
-- Wenn a < 1 ist, dann trifft die rechte Seite zu (alle negativen Zahlen plus 0).
-- Wenn a >= 1 ist, sprich alle anderen Zahlen, dann trifft die linke Seite zu.
Das Konstrukt ist also nutzlos und man muß stattdessen AND nehmen, damit es funktioniert wie gewünscht.


Deshalb immer gut überlegen, ob das, was man da schreibt, wirklich das ist, was man möchte, und nicht nur das, was man glaubt zu möchten. A oder A ist im Sprachgebrauch immer falsch und in der Logik immer wahr.
 
Zurück
Oben