[SQL allgemein] Problem mit AND & OR

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • [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

    Comment


    • #3
      also

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

      Comment


      • #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

        Comment


        • #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

          Comment


          • #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

            Comment


            • #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

              Comment


              • #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

                Comment


                • #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>

                  Comment


                  • #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

                    Comment


                    • #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>

                      Comment


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

                        Greetz Lukas

                        Comment


                        • #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.)

                          Comment

                          Working...
                          X