Ankündigung

Einklappen
Keine Ankündigung bisher.

PHP+MYSQL+IF-Abfrage Problemchen...

Einklappen

Neue Werbung 2019

Einklappen
Dieses Thema ist geschlossen.
X
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • PHP+MYSQL+IF-Abfrage Problemchen...

    Hallo,
    ich habe ein kleines Problem. Bei folgendem query...

    mysql_query("UPDATE ... SET x=IF(x+y=2,0,1), y=IF(x+y=2,0,1)");

    ... bekommt die spalte "x" nach der ersten if-Abfrage direkt den neuen Wert (0 o. 2)
    zugewiesen, das heißt die zweite if-Abfrage ist verfälscht, da dort nicht mehr
    der alte sondern bereits der neue x-Wert genommen wird...

    kann mir jemand sagen, wie sich dieses Problem lösen lässt?

    Gruß Maxi

  • #2
    Ist das denn wirklich so (ich kanns nicht testen, haette aber spontan das Gegenteil behauptet)? Warum 0 oder 2, ich sehe 0 oder 1. Da du X und Y offenbar den gleichen Wert zuweisen moechtest, tu es doch dann auch einfach:

    UPDATE table SET x = IF(x+y=2,0,1), y = x
    "[URL="http://www.youtube.com/watch?v=yMAa_t9k2VA&feature=youtu.be&t=25s"]Mein Name ist Lohse, ich kaufe hier ein.[/URL]"

    Kommentar


    • #3
      nein nein, das ist ein extrem vereinfachtes beispiel.. x,y soll nicht den
      gleichen wert haben... und ja es ist leider so.. finde ich selbst etwas
      verwunderlich...

      hatte vorher 2 und 4 im beispiel verwendet... deswegen im text der
      falsche wert..

      Gruß

      Kommentar


      • #4
        Dann selektier halt den Datensatz vorher, dann hast du ja alle alten Werte.
        "[URL="http://www.youtube.com/watch?v=yMAa_t9k2VA&feature=youtu.be&t=25s"]Mein Name ist Lohse, ich kaufe hier ein.[/URL]"

        Kommentar


        • #5
          jo möglich wär das schon, aber irgendwie unschön^.^ und langsamer
          sicherlich auch, was mich nicht weiter stören würde, aber unter umständen
          kann diese abfrage recht häufig in recht kurzer zeit erfolgen...

          kennt sich keiner damit aus? irgendwer wird das doch studieren, oder so

          Gruß

          Kommentar


          • #6
            Ich glaube nicht dass eine einzige SELECT Abfrage performance-entscheidend ist. Und ich studiere "das" (Informatik). Aber was erwartest du fuer eine Loesung? Du musst irgendwie an die alten Werte kommen, also entweder sortierst du dein SET so, dass keine Abhaengigkeiten entstehen, was vielleicht garnicht moeglich ist, oder du musst anders an die alten Werte herankommen. Da wirst du entweder ein SELECT vorher abschicken muessen (soweit ich weiss ist ein Sub-SELECT dieser Art bei einem UPDATE nicht moeglich), die alten Werte in der selben Abfrage "irgendwie" cachen (wuesste nicht wie, wenn du dir eine Prozedur schreibst bist du auch nicht schneller dran) oder aber du rechnest einfach zurueck (wenn du vorher x=x+1 gerechnet hast, musst du eben danach mit x-1 wieder den alten Wert errechnen).

            Mach dir doch um die Performance-Frage fuer einen Query keinen Kopf, das kannst du machen wenns soweit ist.

            Aber lass mich raten, Browsergame?
            "[URL="http://www.youtube.com/watch?v=yMAa_t9k2VA&feature=youtu.be&t=25s"]Mein Name ist Lohse, ich kaufe hier ein.[/URL]"

            Kommentar


            • #7
              du gefällst mir ^.^

              ich denk ma kurz drüber nach...
              mmh naja eigentlich nciht wirklich ein browsergame dafür hab ich keine
              Zeit und sicherlich auch keine motivation :P sagen wir

              "echtzeit"-2dengine

              ...

              ist es vielleicht möglich, da die IF-abfrage bei beiden spalten (x und y) identisch ist, diese
              nur einmal zu stellen? dann wäre die veränderung egal...

              oder besteht vll ne möglichkeit in der serverconfig das sqlverhalten zu ändern?

              Kommentar


              • #8
                Hoffentlich nicht, sonst wird bei einem Serverumzug garantiert jemand verzweifelt die Koordinatenfehler suchen, weil die Einstellung eine andere ist ..

                Nochmal: Ein Query bringt dich nicht um!

                Was genau willst du denn berechnen?
                "[URL="http://www.youtube.com/watch?v=yMAa_t9k2VA&feature=youtu.be&t=25s"]Mein Name ist Lohse, ich kaufe hier ein.[/URL]"

                Kommentar


                • #9
                  Vielleicht hilft Dir auch ein Update-Trigger. Oder vielleicht kannst Du das auch mit zwi UPDATEs mit WHERE Bedingung lösen.

                  Kommentar


                  • #10
                    mmh keinen Schimmer, was ein Update-Trigger ist, bzw bewirkt..


                    naja schade, dass es scheinbar nicht wie gewünscht funktioniert, dann
                    sind if-abfragen und die distanzberechnung sinnlos und nicht wie ich
                    gehofft hatte eine kleine, sauber minimierung...

                    Gruß

                    Kommentar


                    • #11
                      Zitat von Te7Ris Beitrag anzeigen
                      mmh keinen Schimmer, was ein Update-Trigger ist, bzw bewirkt..
                      Vielleicht steht es in der Dokumentation von MySQL...
                      MySQL :: MySQL Search

                      Kommentar


                      • #12
                        Zitat von David Beitrag anzeigen
                        Vielleicht steht es in der Dokumentation von MySQL...
                        MySQL :: MySQL Search
                        Wie kommst du darauf das irgendetwas in irgendeiner Dokumentation stehen könnte? Das ist doch total unrealistisch

                        Kommentar


                        • #13
                          prinzip des Lehrers noch nich verstanden, mh?

                          .. war ja klar, dass es so weiter geht -.-
                          bin raus aus dem thread (doch nicht...) danke an register_globals!

                          Kommentar


                          • #14
                            a) Seit wann bin ich ein Lehrer?
                            b) Ich wurde in der Schule zum selbständigen Arbeiten angeleitet. Du nicht?

                            Kommentar


                            • #15
                              Ich bin hier aber nicht in der schule und will lernen wie man lernt
                              mit informationsquellen umzugehen, sondern in einem forum, weil
                              der austausch von wissen hier wesentlich unkomplizierter ist und
                              wesentlich weniger zeitaufwendig ist und

                              da du hier im Forum auf eine meiner Fragen antwortest vermittelst
                              du mir damit wissen (das sollte zumindest dein ziel sein) und übernimmst
                              damit die funktion eines lehrers und someit auch das damit verbundene
                              prinzip...

                              Gruß

                              Kommentar

                              Lädt...
                              X