Sakzmann: mal mit, mal ohne KLAMMER -> unterschiedliches Ergebniss, mysql

Also ich habe ein Abfrage die bis jetzt immer funktioniert hat, doch jetzt bin ich auf einen Fehler gestoßen. Und zwar gibt mir folgende Abfrage
SELECT * FROM table1 WHERE human='w' AND bones=1 OR bones=2 OR bones=3
zuviel Treffer aus
wenn, ich die OR Abfrage in Klammer setzte stimmt es!
SELECT * FROM table1 WHERE human='w' AND (bones=1 OR bones=2 OR bones=3)
ist das möglich?

  1. Hallo,

    Und zwar gibt mir folgende Abfrage
    SELECT * FROM table1 WHERE human='w' AND bones=1 OR bones=2 OR bones=3
    zuviel Treffer aus
    wenn, ich die OR Abfrage in Klammer setzte stimmt es!
    SELECT * FROM table1 WHERE human='w' AND (bones=1 OR bones=2 OR bones=3)
    ist das möglich?

    Ja das ist möglich, denn ein "AND" bindet stärker als ein "OR".
    d.h. deine erste Abfrage mach eigentlich das:
    SELECT * FROM table1 WHERE (human='w' AND bones=1) OR bones=2 OR bones=3
    --> alle Datensätze mit 'bones'=2/3 werden unabhängig von 'human' angezeigt.

    Viele Grüße,
    Tim

  2. Hallo?

    Also ich habe ein Abfrage die bis jetzt immer funktioniert hat, doch jetzt bin ich auf einen Fehler gestoßen. Und zwar gibt mir folgende Abfrage
    SELECT * FROM table1 WHERE human='w' AND bones=1 OR bones=2 OR bones=3
    zuviel Treffer aus
    wenn, ich die OR Abfrage in Klammer setzte stimmt es!
    SELECT * FROM table1 WHERE human='w' AND (bones=1 OR bones=2 OR bones=3)
    ist das möglich?

    So wie Kommata Leben retten können, können Klammern Abfrageergebnisse beeinflussen...

    Gruß
    Kalk

    1. Moin!

      So wie Kommata Leben retten können,

      Korrekt. Nicht nur Kommas:

      morgen morgen gips gips gips gips morgen morgen morgen

      --
      Signaturen sind blöd!