[MsSQL]Mehrfaches Update?

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    • [MsSQL]Mehrfaches Update?

      Heyho Com ^-
      Ich steige derzeit von MySQL auf MSSQL um, soweit ist das ganze auch kein Problem.
      Jedoch will ich die Daten von den alten Tabellen mit ins Boot nehmen.
      Einfach gesagt, schnell gemacht mit der Update Funktion.

      PHP-Quellcode

      1. UPDATE [USER_TBL]
      2. set cash = VALUES('500')
      3. WHERE account = ('test')


      Das Script an sich klappt einwandfrei.
      Jedoch habe ich rumgetestet und keine möglichkeit gefunden mehrere Accounts gleichzeitig zu updaten.
      Sprich habe bis jetzt für jeden Account eine Abfrage mit den obigen Script ausgeführt.
      Leider zeimlich stressig und viel zu viel arbeit ^-^

      Also meine Frage:
      Kann man nun mehrer Spalten auf einmal Updaten, bzw bei mehreren Usern die Spalte "cash" updaten?
      (cash hat je nach User unterschiedliche Werte.)
    • Werbung zur Unterstützung des Forums ( Bitte AddBlocker deaktivieren )

    • Jo das geht, dennoch musst du mehrere Queries ausführen.

      SQL-Abfrage

      1. UPDATE [USER_TBL]
      2. set cash = 500
      3. WHERE [account] = 'test' OR [account] = 'test2' OR [account] = 'test3'


      Den Query musste eben für andere cashhöhen öfter ausführen. Über nen komplizierteren Query könnte man zwar das ganze auch ineinander verschachteln, aber ich schätze dass ist nicht in deinem Sinne : )

      Wobei wenn du verschiedene Kriterien hast und verschiedene Spaltenwerte kannste auch gleich mehrere Queries gleichzeitig ausführen. Das macht dann auch keinen Unterschied mehr.

      Ich würde dir empfehlen nen kleineres Script zu schreiben indem man die Accounts und deren entsprechenden Werte eintragen kann.

      PHP-Quellcode

      1. $array = array(
      2. 'test1' => 500,
      3. 'test2' => 300,
      4. 'test23' => 55
      5. );
      6. foreach($array AS $key => $value){
      7. $this->dbclass->execute("UPDATE [USER_TBL] SET [cash] = ? WHERE [account] = ?", array($value, $key)); //Pseudoquery
      8. }



      ~Lunatic
    • Lunatic;272293 schrieb:

      Jo das geht, dennoch musst du mehrere Queries ausführen.

      SQL-Abfrage

      1. UPDATE [USER_TBL]
      2. set cash = 500
      3. WHERE [account] = 'test' OR [account] = 'test2' OR [account] = 'test3'


      Den Query musste eben für andere cashhöhen öfter ausführen. Über nen komplizierteren Query könnte man zwar das ganze auch ineinander verschachteln, aber ich schätze dass ist nicht in deinem Sinne : )

      Wobei wenn du verschiedene Kriterien hast und verschiedene Spaltenwerte kannste auch gleich mehrere Queries gleichzeitig ausführen. Das macht dann auch keinen Unterschied mehr.

      Ich würde dir empfehlen nen kleineres Script zu schreiben indem man die Accounts und deren entsprechenden Werte eintragen kann.
      ~Lunatic


      Danke für die Antwort :P
      Aber OR sagt den Server doch nur, das wenn er test nicht findet nach test2 springen soll oder nicht?
      Also sogesehen sucht dein Script nach einen User, sobald er diesen dann gefunden hat, fügt er den Wert 500 in die Spalte Cash ein. :O

      Ich hatte in den Prinzip vor, mehrer dieser abfragen gleichzeitig auszuführen.
      Ich dachte als erstes an sowas ähnlichen wie der Insert Befehl:

      PHP-Quellcode

      1. INSERT INTO [USER_TBL](account, cash) VALUES('test', '500')
      2. INSERT INTO [USER_TBL](account, cash) VALUES('test2', '1500')


      Sowas ähnliches suche ich halt beim Update Befehl, das man praktisch eig folgendes macht (was ich als erstes versucht hatte, was aber nicht so gehen wollte wie ich es wollte xD)

      PHP-Quellcode

      1. UPDATE [USER_TBL](cash) VALUES(500) WHERE account = 'test'
      2. UPDATE [USER_TBL](cash) VALUES(1500) WHERE account = 'test2'


      Sowas in der Art suche ich, ich hoffe du verstehst meine Anforderungen ^^
      Ich hatte selber ein bisschen rumprobiert, jedoch bekam ich bei dieser Abfrage:

      PHP-Quellcode

      1. UPDATE [USER_TBL]SET cash('500') WHERE account = 'test'
      2. UPDATE [USER_TBL]SET cash('1500') WHERE account = 'test2'


      Den Syntax Fehler (in beiden zeilen) das "cash ('1500')" einen fehler ausweist.
      Bin leider nicht grad der erfahrenste was das angeht und weis aus den grund auch nicht wie ich das ganze behebn kann.
      Hoffe mal du verstehst meine Taten bzw das was ich vor habe ^-^

      mfg
    • Aber OR sagt den Server doch nur, das wenn er test nicht findet nach test2 springen soll oder nicht?

      Übersetzung des Queries:

      "Update die Tabelle [USER_TBL] und setze den Wert der Spalte [cash] überall da auf 500 wo die Spalte [account] den Wert 'test', 'test2' oder 'test3' hat"

      Ergo => Query funktionert, kannste ja mal testen.

      Deine zweite Lösung habe ich dir oben auch schon gesagt : )
      Wobei wenn du verschiedene Kriterien hast und verschiedene Spaltenwerte kannste auch gleich mehrere Queries gleichzeitig ausführen. Das macht dann auch keinen Unterschied mehr.


      Du musst die einzelnen Queries natürlich noch separieren. Probiers mal mit dem Semikolon.