[SQL allgemein] Problem mit AND & OR

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

  • [SQL allgemein] Problem mit AND & OR

    Hi Leute,

    ich hab mal ne Frage: Angenommen ich habe eine Bedingung, die immer gelten muss und ne zweite, die entweder oder gilt.

    z.B. muss feld_aktiv immer 1 sein, aber feld2 darf entweder 5 oder10 sein.

    Nun würde ich das query mal so schreiben:
    PHP-Code:
    "SELECT * FROM tabelle WHERE feld_aktiv = '1' AND feld2 = '5' OR feld2 = '10'"... 
    Nun habe ich aber das Problem, dass ich auch ein Ergebnis bekomme, wenn feld2 gleich 10 ist, auch wenn feld_aktiv nicht 1 ist, weil es ja durch die OR Klausel geteilt ist. Würde ich dieses Ergebnis nicht so haben wollen, müsste ich das so schreiben:

    PHP-Code:
    "SELECT * FROM tabelle WHERE feld_aktiv = '1' AND feld2 = '5' OR feld_aktiv = '1'  AND feld2 = '10'"... 
    Gibts da auch eine Möglichkeit, das so zu schreiben, dass ich "feld_aktiv = '1'" nur einmal schreiben muss und es trotzdem für alle WHERE Anweisungen gilt?

    Ich hoffe, ich konnte es verständlich erklären!

    Tnx & Greetz Lukas

  • #2
    klammern
    Beantworte nie Threads mit mehr als 15 followups...
    Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

    Kommentar


    • #3
      also

      PHP-Code:
      "SELECT * FROM tabelle WHERE feld_aktiv = '1' AND ( feld2 = '5' OR feld2 = '10') AND/OR bzw. ORDER BY ..." 
      ???

      Kommentar


      • #4
        so ähnlich ja...
        btw wird deine obige abfrage sicherlich ein falsches ergebnis liefern da AND höherwertig ist als OR...
        Beantworte nie Threads mit mehr als 15 followups...
        Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

        Kommentar


        • #5
          sorry, ich durchblicke deine Antwort nicht ganz. Kannst du mir das bitte anhand meines Beispiels zeigen, wo ich die Klammern setzen muss? Das wäre für mich wesentlich einfacher!

          Danke dir!

          Greetz Lukas

          Kommentar


          • #6
            deine abfrage is schon nicht schlecht aber Du kannst auch IN() benutzen also lies Dich mal durch ne sql tut oder so...
            Beantworte nie Threads mit mehr als 15 followups...
            Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

            Kommentar


            • #7
              Hast du vielleicht nen Link zu einem guten SQL Tut? Mit dem in() komme ich nämlich nicht weit, da das in so ziemlich jeder Suchanfrage ignoriert wird!

              Danke, Lukas

              Kommentar


              • #8
                so, ich denke, es nun geschafft zu haben:

                PHP-Code:
                "SELECT * FROM tabelle WHERE feld_aktiv = '1' AND (feld2 = '5' OR feld2 = '10')" 
                Greetz Lukas

                Kommentar


                • #9
                  ist 1 5 und 10 immer vorhanden? wenn ja kann ' ' entfallen,
                  ist jetzt doof-> ausgedrückt, bei Zahlen (int) sind keine ' ' nötig.
                  mfg
                  marc75

                  <Platz für anderes>

                  Kommentar


                  • #10
                    würdest du nun folgende Einträge haben:

                    feld_aktiv = 1, feld2 = 5
                    &
                    feld_aktiv = 0, feld2 = 10

                    würdest du nur das 1. Ergebnis bekommen. Hättest du ohne Klammern gearbeitet, bekämst du beide Ergebnisse, da nun entweder feld_aktiv 1 sein muss und feld 2 5 oder nur feld 2 10.

                    Klaro?

                    Greetz Lukas

                    Kommentar


                    • #11
                      Original geschrieben von skalu
                      würdest du nun folgende Einträge haben:

                      feld_aktiv = 1, feld2 = 5
                      &
                      feld_aktiv = 0, feld2 = 10

                      würdest du nur das 1. Ergebnis bekommen. Hättest du ohne Klammern gearbeitet, bekämst du beide Ergebnisse, da nun entweder feld_aktiv 1 sein muss und feld 2 5 oder nur feld 2 10.

                      Klaro?

                      Greetz Lukas

                      PHP-Code:
                      //ich meinte

                      //deins
                      "SELECT * FROM tabelle WHERE feld_aktiv = '1' AND (feld2 = '5' OR feld2 = '10')"

                      //meins
                      "SELECT * FROM tabelle WHERE feld_aktiv = 1 AND (feld2 = 5 OR feld2 = 10)" 
                      mfg
                      marc75

                      <Platz für anderes>

                      Kommentar


                      • #12
                        achso! Ich schreibe das immer in Hochkommata!

                        Greetz Lukas

                        Kommentar


                        • #13
                          Du solltest aber besser kein hochkomma verwenden, denn dann machst du einen Vergleich und der dauert länger!
                          Gruß Asrac

                          (Man hat´s nicht leicht aber leicht hat´s einen.)

                          Kommentar

                          Lädt...
                          X