Zum Inhalt springen

Empfohlene Beiträge

Geschrieben (bearbeitet)

Moin, 

SELECT * FROM `customers` WHERE
(`title` = ‘Frau Dr.‘ OR ‘Herr Dr.‘) AND `age` < 30 (Der Code der sich in Klammern befindet sagt aus dass dieser als erstes ausgeführt wird. Ist diese aussage so richtig?

lg

Bearbeitet von exploit
Geschrieben
vor 3 Minuten schrieb samuelz00:

Ich würde es so schreiben:


WHERE

(title = 'Frau Dr.' OR title = 'Herr Dr.') AND ....

oder alternativ:

WHERE
title in ('Frau Dr.' , 'Herr Dr.') AND ...

Danke dir, also ist die Aussage mit den Klammern richtig, jener befehl in den Klammern wird als erstes ausgeführt?

Geschrieben (bearbeitet)

Die Klammern tun genau das, was klammern tun, sie klammern. Genauso wie in der Mathematik. Während bei der Mathematik Punkt vor Strich gilt und du dies durch Klammern beeinflussen kannst, gilt in SQL bzw. generell bei booleschen Ausdrücken, dass die Klammer verbindet, was das OR trennt.

Davon ab ist dein Beispiel fehlerhaft und hier müsste ebenfalls 

`title` = 'Herr Dr.'

stehen. Alternativ kannst du wie von @samuelz00 beschrieben ein IN verwenden, was das Ganze einfacher macht, denn Klammern können gerade bei komplexeren Anweisungen für mehr Komplexität sorgen.

Ohne deine Klammern würde deine Abfrage dann aussagen, dass alles zutrifft, wo der Titel 'Frau Dr.' ist ODER der Titel 'Herr Dr.' ist UND das Alter kleiner 30 ist.

In diesen Fall würde die < 30 dann nicht gelten für die Frauen, da die Trennung erfolgt beim OR, wäre also:

Bedingung 1:

`title`= 'Frau Dr.'

Bedingung 2:

`title = 'Herr Dr.' AND age < 30

In dem du klammerst sagst du, dass einer der Titel übereinstimmen muss und trennst mit dem OR nicht den kompletten Ausdruck, sondern nur die Ausdrücke innerhalb der Klammer.

Ohne Klammern ist es also so als wenn du das AND klammerst:

`title` = 'Frau Dr.' OR (`title = 'Herr Dr.' AND age < 30)

 

Bearbeitet von Velicity
Geschrieben
vor 10 Minuten schrieb Velicity:

Die Klammern tun genau das, was klammern tun, sie klammern. Genauso wie in der Mathematik. Während bei der Mathematik Punkt vor Strich gilt und du dies durch Klammern beeinflussen kannst, gilt in SQL bzw. generell bei booleschen Ausdrücken, dass die Klammer verbindet, was das OR trennt.

Davon ab ist dein Beispiel fehlerhaft und hier müsste ebenfalls 

`title` = 'Herr Dr.'

stehen. Alternativ kannst du wie von @samuelz00 beschrieben ein IN verwenden, was das Ganze einfacher macht, denn Klammern können gerade bei komplexeren Anweisungen für mehr Komplexität sorgen.

Ohne deine Klammern würde deine Abfrage dann aussagen, dass alles zutrifft, wo der Titel 'Frau Dr.' ist ODER der Titel 'Herr Dr.' ist UND das Alter kleiner 30 ist.

In diesen Fall würde die < 30 dann nicht gelten für die Frauen, da die Trennung erfolgt beim OR, wäre also:

Bedingung 1:

`title`= 'Frau Dr.'

Bedingung 2:

`title = 'Herr Dr.' AND age < 30

In dem du klammerst sagst du, dass einer der Titel übereinstimmen muss und trennst mit dem OR nicht den kompletten Ausdruck, sondern nur die Ausdrücke innerhalb der Klammer.

Ohne Klammern ist es also so als wenn du das AND klammerst:

`title` = 'Frau Dr.' OR (`title = 'Herr Dr.' AND age < 30)

 

Aufrichtigen Dank

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...