Ich habe ein Tabelle mit der Spalte „External ID“, „Versionnumber“ und „Ordable“. Ich muss nun mit einem Update den Wert in der Spalte „Ordable“ auf 0 (nicht mehr bestellbar) setzten. Das Problem ist, dass die ExternalID nicht eindeutig ist. Z.B. „ExternalID“ 12425 und „Versionnumber“ 3 sowie „ExternalID“ 12425 und „Versionnumber“ 4. Ich möchte nun nur den Eintrag mit der Versionnumber 3 den Wert 0 geben. Zur Zeit haben bei Versionen den Wert in „Ordable“ 1.
Könnt ihr mir helfen, wie ich „ExternalID“ und „Versionnumber“ verbinden kann, damit ich eine eindeutige ID habe?
wenn ich Deine Frage richtig verstehe, sind 2 Fragen enthalten:
Ich muss nun mit einem Update den Wert in der Spalte „Ordable“ auf 0 (nicht mehr bestellbar) setzten.
Könnt ihr mir helfen, wie ich „ExternalID“ und „Versionnumber“ verbinden kann, damit ich eine eindeutige ID habe?
zu 1. sollte folgende SQL-Anweisung genügen:
UPDATE Tabelle
SET „Ordable“ = 0
WHERE „Versionnumber“ = 3;
Es werden alle Zeilen mit „Versionnumber“ = 3 auf „Ordable“ = 0 geändert. Falls das nicht gewünscht ist, muss eine weitere Bedingung in die WHERE-Klausel (mit AND verknüpft).
zu 2. Was ist mit „eindeutiger ID“ gemeint?
a) eine eindeutige Wertekombination:
ALTER TABLE Tabelle
ADD CONSTRAINT CK_Eindeutige_ID UNIQUE („ExternalID“, „Versionnumber“);
b) beide Spalten als zusammengesetzter Primärschlüssel:
ALTER TABLE Tabelle
DROP PRIMARY KEY, ADD PRIMARY KEY („ExternalID“, „Versionnumber“);
Hinweis: Die SQL-Syntax muss ggf. an das DBMS angepasst werden.
Hi,
ich gehe jetzt von ORACLE aus, Hier kann man einen UNIQUE Index erstellen, der aus mehrerern Spalten besteht.
CREATE UNIQUE INDEX for (External_ID,Versionnumber);
Die bewirkt, dass die beiden Werte in der Tabelle zusammen eindeutig sind.
Für einen Select kannst du wie folgt vorgehen:
SELECT * from
where External_ID||Versionnumber = 124253 ;
Der Trick dabei ist, durch Verkettung von 2 Feldern nur 1 Wert als Abgleich zu benutzen.
Viele Grüße
Siegwin
falls es bei deiner Anfrage um eine Datenbank und den passenden SQL-Befehl geht:
UPDATE deineTabelle SET Ordable = 0 WHERE ExternalID = 12425 AND Versionnumber = 3 LIMIT 1 ;
Und natürlich statt „deineTabelle“ den richtigen Tabellennamen einsetzen.
Allgemein ist es immer sehr hilfreich, den Kontext (DB, Produkt, Version usw.)
anzugeben.