Hallo in die Runde!
Ich lese hier schon immer mal im Bedarfsfall mit und bräuchte jetzt mal eine kleine Unterstützung. Leider habe ich bislang keine passende Lösung gefunden.
Folgenden Sachverhalt habe ich in einer SQL-Datenbank:
Es sind 2 Tabellen vorhanden. Über einen gleichen Schlüssel (ID) soll ein Wert aus einer anderen Tabelle übernommen werden.
Beispiel:
Tabelle1
ID Zahl
1001 -1
1002 -1
1003 13
1004 -1
Tabelle2
ID Zahl Datum
1001 10 01.03.2018
1002 12 01.03.2018
1003 13 01.03.2018
1002 10 03.03.2018
1004 13 02.03.2018
(in der Anlage sieht es bißchen schöner aus) ;-)
Es sollen die Werte "Zahl" aus der Tabelle2 in die Tabelle1 übernommen werden, wenn in der Tabelle1 die Zahl -1 beträgt.
Eine weitere Besonderheit ist, dass in der Tabelle2 auch mehrere Datensätze zu einer ID vorhanden sein können. Hier sollte die Zahl mit dem größten Datum übernommen werden.
Ich habe es schon mit "verschachtelten" Update-Befehlen versucht, aber komme nicht so richtig zum Ergebnis bzw. der Server meckern mich an...
Beispiel:
update Tabelle1
set zahl = (select zahl from Tabelle2 where Tabelle1.id=Tabelle2.id)
where tabelle1.zahl=-1
Es kommt die Hinweismeldung:
Die Unterabfrage hat mehr als einen Wert zurückgegeben. Das ist nicht zulässig, wenn die Unterabfrage auf =, !=, <, <=, > oder >= folgt oder als Ausdruck verwendet wird.
Dann habe ich es noch mit einem JOIN versucht, aber das Ergebnis war auch nicht zufriedenstellend :-(
UPDATE Tabelle1
SET zahl = Tabelle2.zahl
FROM Tabelle1 INNER JOIN Tabelle2 ON Tabelle1.id = Tabelle2.id
where Tabelle1.zahl=-1
Könnte mir bitte jemand mit einem möglichen Befehl helfen?
Danke und viele Grüße
Basti
Ich lese hier schon immer mal im Bedarfsfall mit und bräuchte jetzt mal eine kleine Unterstützung. Leider habe ich bislang keine passende Lösung gefunden.
Folgenden Sachverhalt habe ich in einer SQL-Datenbank:
Es sind 2 Tabellen vorhanden. Über einen gleichen Schlüssel (ID) soll ein Wert aus einer anderen Tabelle übernommen werden.
Beispiel:
Tabelle1
ID Zahl
1001 -1
1002 -1
1003 13
1004 -1
Tabelle2
ID Zahl Datum
1001 10 01.03.2018
1002 12 01.03.2018
1003 13 01.03.2018
1002 10 03.03.2018
1004 13 02.03.2018
(in der Anlage sieht es bißchen schöner aus) ;-)
Es sollen die Werte "Zahl" aus der Tabelle2 in die Tabelle1 übernommen werden, wenn in der Tabelle1 die Zahl -1 beträgt.
Eine weitere Besonderheit ist, dass in der Tabelle2 auch mehrere Datensätze zu einer ID vorhanden sein können. Hier sollte die Zahl mit dem größten Datum übernommen werden.
Ich habe es schon mit "verschachtelten" Update-Befehlen versucht, aber komme nicht so richtig zum Ergebnis bzw. der Server meckern mich an...
Beispiel:
update Tabelle1
set zahl = (select zahl from Tabelle2 where Tabelle1.id=Tabelle2.id)
where tabelle1.zahl=-1
Es kommt die Hinweismeldung:
Die Unterabfrage hat mehr als einen Wert zurückgegeben. Das ist nicht zulässig, wenn die Unterabfrage auf =, !=, <, <=, > oder >= folgt oder als Ausdruck verwendet wird.
Dann habe ich es noch mit einem JOIN versucht, aber das Ergebnis war auch nicht zufriedenstellend :-(
UPDATE Tabelle1
SET zahl = Tabelle2.zahl
FROM Tabelle1 INNER JOIN Tabelle2 ON Tabelle1.id = Tabelle2.id
where Tabelle1.zahl=-1
Könnte mir bitte jemand mit einem möglichen Befehl helfen?
Danke und viele Grüße
Basti