title image


Smiley Re: Unterabfrage ergab mehr als ein Wert oder NULL
Wie kann ich es erreichen, dass die Abfragen trotzdem durchlaufen und ich in diesen Fällen im Feld1 z.B. den String 'Fehler1' stehen habe? Ich müsste irgendwie schon vor dem Update wissen, wieviele Wert mir die Unterabfrage rausgibt, und dann sozusagen bei Werten > 1 immer den String 'Fehler1' reinschreiben. Doch wie geht das sinnvoll und vor allen Dingen auch so, dass ich nicht stundenlagen warten muss. Indexe sind sowohl auf Feld1 als auch ID in beiden Tabellen gesetzt.



Eigentlich gibt es dafür zwei Herangehensweisen.



1. Dir ist einfach egal, welcher der Verträge herangezogen wird. Dann machst du statt des einfachen SELECTs in der Klammer ein SELECT MAX(...). Damit erhältst du garantiert nur einen Wert.



2. Du updatest nur die, zu denen es einen einzigen Vertrag gibt. Dann musst du in das äußere UPDATE noch ein WHERE 1 = (SELECT COUNT(*) FROM...) einbauen. Genauso kannst du dann natürlich auch den Fehlerfall abfangen mit WHERE 1 < (SELECT COUNT(*)...).



Gruß

Saluk





diu vive floreque.
Spockus

erreicht am 04.03.2008 09:47:23

geschrieben von

Login

E-Mail:
  

Passwort:
  

Beitrag anfügen

Symbol:
 
 
 
 
 
 
 
 
 
 
 
 
 

Überschrift: