PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : MySQL Query


Marscel
2005-11-13, 16:35:21
Ich habe hier eine Tabelle, die sieht so aus:


attribute | value
------------------
counter1 | 0
counter2 | 0


Wie muss der SQL-Query aussehen, damit ich in einem Rutsch(!) beide Werte unterschiedlich voneinander ändern kann (z.B. soll counter1 = 5; counter2 = 10 sein)?

UPDATE table SET ??? WHERE ??? = ??? ;

Das haut ja nicht hin (zmd ohne Präfixe oder so), da ich auch nicht weiß, wie man so ein Problem nennt, konnte ich nicht in den Developer Docs suchen.

Captain America
2005-11-13, 16:47:13
wenn du zwei rows updaten willst, die sich nicht mit einer einzigen where klausel differenzieren lassen, mit jeweils zwei unterschiedlichen werten, musst du auch zwei abfragen abschicken.

UPDATE tabelle SET value = 5 WHERE attribute = 'counter1'
UPDATE tabelle SET value = 10 WHERE attribute = 'counter2'

Mach dir keine sorgen die Datenbank mit sowas zu "belasten", schau dir mal an was du hier tust: 2 Integer updaten, sind paar Bytes.

Marscel
2005-11-13, 17:07:35
Ich dachte eigentlich, Datenbankentwickler hätten für alle Fälle irgendwelche Lösungen in einem Query ermöglicht (da hat mich schon einiges überrascht).

Aber wenn es nicht anders geht, mach ich es so.

Danke erstmal.

Silpion
2005-11-14, 09:27:50
Wenn du die neuen Daten schon in einer Tabelle (temporär im Speicher) hast, funktioniert auch folgendes:
UPDATE products,inventory SET products.quan_in_stock = inventory.quan_in_stock
WHERE products.prod_id = inventory.prod_id;Erklärung:
Products hat unter anderem die Attribute prod_id und quan_in_stock. Inventory hat nur prod_id und quan_in_stock. Inventory enthält die neuen quan_in_stock-Werte.

Die quan_in_stock-Werte der Tabelle products werden nun mit denen aus Inventory überschrieben (zugeordnet anhand der prod_id).