[MySQL 4.0] Mehrere Betweens

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

  • [MySQL 4.0] Mehrere Betweens

    Mahlzeit,

    ich hab mal wieder ein kleines Problem.

    Hab hier nen Newsletter bei dem man in einem multiple Select-Feld die Altersgruppen der Empfänger auswählen kann.

    Es wird dann abgefragt mit gebjahr BETWEEN 1980 AND 1990.
    Wenn mehrere ausgewählt sind hänge ich die mit OR gebjahr BETWEEN 1980 AND 1990 an.
    Klappt soweit auch ganz gut, nur muss ich noch was anderes überprüfen.
    status=1 oder 2, 3 usw.
    Wenn ich jetzt vorn oder hinten status=1 AND bzw. AND status=1 anhänge dann beachtet er diese status-Abfrage garnicht.

    Ich hab bisher weder hier noch bei Google oder in der MySQL Doku was dazu gefunden was mich weiterbringen würde.

    Hoffe das mir hier jemand den entscheidenden Tip geben kann.
    Gruß

    Majjo

  • #2
    MySQL läßt nicht einfach Teile der Query unter den Tisch fallen. Wenn irgendwo ein status=1 steht, wird das auch berücksichtigt.

    Ob es sich in der Ergebnismenge widerspiegelt, hängt natürlich davon ab, ob es ein Teil einer entscheidenden Klausel ist.

    Kommentar


    • #3
      PHP-Code:
      mysql_query("SELECT username FROM benutzer WHERE status='7' AND gebjahr BETWEEN 1990 AND 2005 ".
      "OR gebjahr BETWEEN 1985 AND 1987"); 
      Das ist mein Query wenn ich 1-16 und 19-21 auswähle.

      PHP-Code:
      mysql_num_rows($query
      ergibt da z.B. 2070.
      Die Beiden Altersgruppen zusammen haben allerdings 2611 Benutzer.
      Die Differenz von 541 ist genau die Anzahl der User von 1-16.
      Also wird da das erste Between nicht mit einbezogen, sondern er nimmt wohl anstatt STATUS und BETWEEN 1 dann BETWEEN 2.
      Wahrscheinlich wegen dem OR

      Also habe ich da irgendwo den Fehler. Und genau den such ich


      EDIT: Er beachtet so auch nicht STATUS !
      Gruß

      Majjo

      Kommentar


      • #4
        Du muß halt richtig klammern!
        http://dev.mysql.com/doc/refman/5.0/...recedence.html

        Kommentar


        • #5
          Mit Klammern hatte ich es mal probiert, da war das Ergebnis immer 0.

          Gib mir doch mal nen Tip wie ich das richtig Klammer.
          Gruß

          Majjo

          Kommentar


          • #6
            SELECT ... FROM ... WHERE status = 1 AND ((xyz BETWEEN foo AND bar) OR (abc BETWEEN bla AND blubb))


            Übrigens nicht ='1' sondern =1.

            Kommentar


            • #7
              Danke dir.
              Klappt einwandfrei.

              Hatte den gesamten Between Bereich nicht nochmal umklammert gehabt.
              Gruß

              Majjo

              Kommentar

              Lädt...
              X