Ankündigung

Einklappen
Keine Ankündigung bisher.

sql Verständnisfrage bei Verwendung von OR und AND

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • sql Verständnisfrage bei Verwendung von OR und AND

    Hab mal ne reine Verständnisfrage
    PHP-Code:
    SELECT bla FROM xy WHERE kdnr=OR kdnr=AND kategorie='s'"; 
    muss ich da noch klammern setzen wenn kdnr 0 oder 1 sein soll und kategorie=s?
    Oder wird das so verstanden, dass kdnr entweder 0 sein muss ODER kdnr 1 sein muss und kategorie s sein muss.
    Phuu, das klingt verwirrt aber ich hoffe ihr wisst was ich meine.

  • #2
    Ja das klingt sehr verwirrt.
    Ich vermute mal , Dir geht es darum welche Operation als erstes durchgeführt wird.
    Aber du kannst es ja auch einfach mal ausrpobieren.
    Normalerweise wird erst AND miteinander verglichen.



    bitcoin.de <- Meine Freelancerwährung

    Kommentar


    • #3
      ist wirklich etwas unverständlich geschrieben.
      Also ich würde gerne wissen, wenn man das ohne Klammern schreibt, ob es so intepretiert wird:
      PHP-Code:
      SELECT bla FROM xy WHERE (kdnr=OR kdnr=1) AND kategorie='s' 
      oder vielleicht so:
      PHP-Code:
      SELECT bla FROM xy WHERE kdnr=OR (kdnr=AND kategorie='s'

      Kommentar


      • #4
        Problem ist leider, dass ich 1000e von Datensätze habe, ich kann also nicht nachvollziehen, ob das gewünschte Ergebnis stimmt.

        Kommentar


        • #5
          Zitat von majak01 Beitrag anzeigen
          Problem ist leider, dass ich 1000e von Datensätze habe, ich kann also nicht nachvollziehen, ob das gewünschte Ergebnis stimmt.
          Dann solltest Du dieses Problem vorzugsweise angehen. Keine Kontrolle zu haben bedeutet oft massige Probleme bei weiteren Entwicklungen und Sicherheitsprobleme.
          Keine Kontrolle zu haben, ist der absolute Supergau.
          bitcoin.de <- Meine Freelancerwährung

          Kommentar


          • #6
            Im Zweifel würde ich bei sowas IMMER Klammern setzen - damit machst du dir nichts kaputt und hilfst dem SQL-Interpreter in der Datenbank enorm auf die Sprünge

            lass dem System aus PHP und Datenbank sowenig Interpretationsspielraum, wie möglich ... so verhinderst du gleichzeitig aus deiner Sicht unlogische Verhaltensweisen
            "Irren ist männlich", sprach der Igel und stieg von der Drahtbürste [IMG]http://www.php.de/core/images/smilies/icon_lol.gif[/IMG]

            Kommentar


            • #7
              Wer hindert Dich und vor allem wie, es mal zu probieren?

              Code:
              test=*# select * from majak01 ;
               kdnr | kategorie
              ------+-----------
                  0 | s
                  1 | s
                  0 | t
                  1 | t
              (4 Zeilen)
              
              test=*# select * from majak01 where kdnr = 0 or kdnr = 1 and kategorie = 's';
               kdnr | kategorie
              ------+-----------
                  0 | s
                  1 | s
                  0 | t
              (3 Zeilen)
              
              test=*# select * from majak01 where (kdnr = 0 or kdnr = 1) and kategorie = 's';
               kdnr | kategorie
              ------+-----------
                  0 | s
                  1 | s
              (2 Zeilen)
              
              test=*# select * from majak01 where kdnr = 0 or (kdnr = 1 and kategorie = 's');
               kdnr | kategorie
              ------+-----------
                  0 | s
                  1 | s
                  0 | t
              (3 Zeilen)
              PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

              Kommentar


              • #8
                https://dev.mysql.com/doc/refman/5.7...recedence.html
                [SIZE="1"]Atwood's Law: any application that can be written in JavaScript, will eventually be written in JavaScript.[/SIZE]

                Kommentar


                • #9
                  ich kann also nicht nachvollziehen, ob das gewünschte Ergebnis stimmt.
                  Aber wo ist dann das Problem, wenn du gar nicht zwischen richtig und falsch unterscheiden kannst? Dann hast du doch auch von der "Lösung" nichts. Ansonsten:

                  Zitat von eagle275 Beitrag anzeigen
                  Im Zweifel würde ich bei sowas IMMER Klammern setzen


                  [I]You know, my wife sometimes looks at me strangely. „Duncan“, she says, „there's more to life than Solaris“. Frankly, it's like she speaks another language. I mean, the words make sense individually, but put them together and it's complete nonsense.[/I]

                  Kommentar


                  • #10
                    Klammern zu setzen macht es auch für andere klarer wie die Bedingung genau aussehen soll, ohne evtl. erst ins Handbuch sehen zu müssen.
                    [COLOR=#A9A9A9]Relax, you're doing fine.[/COLOR]
                    [URL="http://php.net/"]RTFM[/URL] | [URL="http://php-de.github.io/"]php.de Wissenssammlung[/URL] | [URL="http://use-the-index-luke.com/de"]Datenbankindizes[/URL] | [URL="https://www.php.de/forum/webentwicklung/datenbanken/111631-bild-aus-datenbank-auslesen?p=1209079#post1209079"]Dateien in der DB?[/URL]

                    Kommentar


                    • #11
                      Zitat von majak01 Beitrag anzeigen
                      Also ich würde gerne wissen, wenn man das ohne Klammern schreibt, ob es so intepretiert wird
                      Ist doch irrelevant. Verwende immer Klammern, dann ergibt sich so eine Frage erst gar nicht. Das macht auch den Code wesentlich lesbarer.

                      Kommentar


                      • #12
                        Zitat von eagle275 Beitrag anzeigen
                        [...] und hilfst dem SQL-Interpreter in der Datenbank enorm auf die Sprünge
                        Ich glaube dem SQL-Interpreter bzw. dem Parser ist es egal ob da Klammern sind oder nicht, es dürfte sogar schneller sein ohne Klammern, da der Parser einfach nach vorgeschriebener Operatorenpräzedenz ( #8 ) arbeitet.
                        "Software is like Sex, it's best if it's free." - Linus Torvalds

                        Kommentar


                        • #13
                          ich hab ja sowieso Klammern verwendet um auf der sicheren Seite zu sein und es funktioniert ja eh alles genau so wie ich es haben will.
                          Es handelte sich wie im Ausgangspost bereits erwähnt um eine reine Verständnisfrage und wenn ich das jetzt richtig verstanden habe wird immer AND bevorzugt.

                          Kommentar


                          • #14
                            Zitat von majak01 Beitrag anzeigen
                            Es handelte sich wie im Ausgangspost bereits erwähnt um eine reine Verständnisfrage und wenn ich das jetzt richtig verstanden habe wird immer AND bevorzugt.
                            Lies doch einfach im Handbuch nach, wenn dich sowas interessiert:

                            https://dev.mysql.com/doc/refman/5.7...recedence.html

                            Kommentar

                            Lädt...
                            X