Announcement

Collapse
No announcement yet.

Hilfe update funktioniert nicht richtig

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

  • Hilfe update funktioniert nicht richtig

    Ich versuche über die Querry unten Punkte eines Tippspiels zu berechnen wenn ein User richtig getippt hat. Allerdings werden Punkte auch eingetragen obwohl Spiele.played falsch ist oder Spiele.erg1=0, Spiele.erg2=0, tip.tip1=4 und tip.tip2=8 was ja nicht sein sollte.
    Könnte mir bitte jemand sagen wo mein Fehler liegt.


    update tip, Spiele set tip.punkte=1
    where (((Spiele.erg1<Spiele.erg2) and (tip.tip1<tip.tip2))
    or ((Spiele.erg1>Spiele.erg2) and (tip.tip1>tip.tip2))
    or ((Spiele.erg1=Spiele.erg2) and (tip.tip1=tip.tip2)))
    and (Spiele.played = true )

  • #2
    Hallo Chopsuey,

    ich kenne jetzt nicht genau die Logik, adhoc würde ich aber sagen, Du hast Dich mit den Klammern vertan (Punkt vor Strich - Regel!): In Deinem Statement wird "AND Spiele.played = TRUE" nicht richtig ausgewertet, da esseparat geklammert ist.

    [highlight=SQL]UPDATE tip, Spiele
    SET tip.punkte = 1
    WHERE ( (Spiele.erg1 < Spiele.erg2 AND tip.tip1 < tip.tip2)
    OR (Spiele.erg1 > Spiele.erg2 AND tip.tip1 > tip.tip2)
    OR (Spiele.erg1 = Spiele.erg2 AND tip.tip1 = tip.tip2)
    )
    AND Spiele.played = TRUE[/highlight]

    Tip:
    - Vermeide unnötige Klammern
    - Achte dafür um so mehr auf wichtige Klammern
    - Formatiere SQL sinnig, dann sieht/findet man Fehler leichter
    Olaf Helper

    <Blog> <Xing>
    * cogito ergo sum * errare humanum est * quote erat demonstrandum *
    Wenn ich denke, ist das ein Fehler und das beweise ich täglich

    Comment


    • #3
      Hallo Olaf,
      danke für die schnelle Antwort.
      Leider ist der Fehler immer noch da. Die vielen Klammern habe ich nur gemacht um eventuelle Probleme, welche mit den Rangfolgen der Operatoren auftreten können erstmal auf später zu verschieben.
      Zuletzt editiert von Chopsuey; 29.04.2008, 11:55.

      Comment


      • #4
        Dann müsstes Du etwas detailierter beschreiben, wie die Logik sein soll.
        Oben steht nur "Spiele.erg1=0" darf nicht sein, also so:

        [highlight=SQL]
        UPDATE tip, Spiele
        SET tip.punkte=1
        WHERE ( (Spiele.erg1 < Spiele.erg2 AND tip.tip1 < tip.tip2)
        OR (Spiele.erg1 > Spiele.erg2 AND tip.tip1 > tip.tip2)
        OR (Spiele.erg1 = Spiele.erg2 AND tip.tip1 = tip.tip2)
        )
        AND Spiele.played = TRUE
        AND Spiele.erg1 <> 0
        AND Spiele.erg2 <> 0[/highlight]
        Olaf Helper

        <Blog> <Xing>
        * cogito ergo sum * errare humanum est * quote erat demonstrandum *
        Wenn ich denke, ist das ein Fehler und das beweise ich täglich

        Comment


        • #5
          Hab den Fehler jetzt gefunden
          ich musste noch prüfen auf Spiele.nr=tip.spielnummer
          Sorry für die verschwendete Zeit

          Comment

          Working...
          X