UPDATE mit mehrdeutigem JOIN

24/09/2009 - 22:03 von Lutz Elßner | Report spam
UPDATE t1
SET t1.WSchl=t2.WSchl
FROM t1
JOIN t2 ON t1.We=t2.We

In diesem Fall kann t2.WSchl verschiedene Werte in verschiedenen Rows in t2 haben.
SET t1.WSchl erhàlt durch UPDATE also irgend einen (oder den ersten besten) dieser Werte.

a) làsst sich ein Fehler erzeugen und abbrechen, wenn t2 mehrere Rows liefert? (Wie bei Select Unterabfragen)

b) làsst sich das Update nur auf eindeutige Ergebnisse beschrànken, und mehrdeutige Ergebnisse ignorieren (sicherlich in der WHERE
Klausel, aber wie könnte die aussehen?)

Jedenfalls soll das UPDATE nur erfolgen, wenn in t2 genau eine Zeile existiert, und somit das Ergebnis eindeutig ist.

Vielen Dank für Ideen.

Lutz
 

Lesen sie die antworten

#1 Olaf Helper
25/09/2009 - 08:37 | Warnen spam
Hallo Lutz

a) làsst sich ein Fehler erzeugen und abbrechen, wenn t2 mehrere Rows liefert? (Wie bei Select Unterabfragen)



Ja, und zwar genauso wie Du schon schriebst; Du verwendest ein Sub-Select,
nur bricht dann natürlich das Update komplett wegen des Fehlers ab.

b) làsst sich das Update nur auf eindeutige Ergebnisse beschrànken, und mehrdeutige Ergebnisse ignorieren (sicherlich in der WHERE
Klausel, aber wie könnte die aussehen?)



In dem Du über die Anzahl der Datensàtze aus t2 filterst:

UPDATE t1
SET t1.WSchl=t2.WSchl
FROM t1
JOIN t2 ON t1.We=t2.We
WHERE (SELECT COUNT(*)
FROM t2 AS SUB
WHERE t1.We=SUB.We) = 1

Beste Grüße, Olaf

Ähnliche fragen