PDA

View Full Version : SQL Update 2 Dateien - Fehler Ergebnis der Anweisung enthält mehr als eine Zeile.



svente
10-04-14, 10:05
Servus,
mal wieder ein SQL Update Problem. Habe eine bestehende Abfrage bei uns in der Firma
abgeändert und er kommt auf Fehler "Ergebnis der Anweisung enthält mehr als eine Zeile."

Hier mal das SQL Statement

update T1 a set a.code =
(select b.kostst from T2 b where a.firma = b.firma and a.art = b.art)

where exists

( select b.kostst from T2 b where a.firma = b.firma and a.art = b.art);

Wo mache ich den Gedankenfehler?

KingofKning
10-04-14, 10:28
Blöde Frage: Bekommst Du beim select wirklich nur eine Antwortzeile oder mehrer. Sprich ist evtl. der Artikel 2x drin?GG

andreaspr@aon.at
10-04-14, 10:44
Ganz sicher sogar wird es einen mit diesem Key einen Satz öfters geben.
Entweder fehlt im WHERE noch ein weiterer Key oder bei den Daten stimmt was nicht.

lg Andreas

svente
10-04-14, 10:54
Daten sind nicht stimmig. Der Artikelsatz ist unter mehreren Firmen vorhanden. Typischer Fall von
"Historisch gewachsen" .
Werde mir jetzt eine ARbeitsdatei nur mit der einen Firma erstellen und dann müsste ja klappen.

Danke für den Denkanstoss....

Fuerchau
10-04-14, 10:55
Also wenn in der Tabelle T2 der Schlüssel nicht eindeutig ist und du den eindeutigen nicht findest, hilft dir ggf. dieses:

update T1 a set a.code =
(select min(b.kostst) from T2 b where a.firma = b.firma and a.art = b.art)

where exists

( select b.kostst from T2 b where a.firma = b.firma and a.art = b.art);

TheDevil
10-04-14, 11:02
Hallo.
@KingofKing ... Sorry aber ich finde Kommentare wie "Blöde Frage" überflüssig.
Gruß,
Ralf

Fuerchau
10-04-14, 11:08
"Der Artikelsatz ist unter mehreren Firmen vorhanden"
Du hast doch den Firmenschlüssel im Bezug!
Also muss es den Schlüssel in einer Firma mehrmals geben.

svente
10-04-14, 11:09
Danke @Fuerchau, hat damit super funktioniert.

KingofKning
10-04-14, 13:35
Ich wollte das Ganze als PM schicken, geht aber leider nicht. Deshalb wohl oder übel übers Forum.Entschuldigung, aber das ist kein Kommentar! Es ist genau das was da steht. Weil ich davon ausgehe das jemand die Antwort des Systems (Ergebnis der Anweisung enthält mehr als eine Zeile) auf den Wahrheitsgehalt prüft und sich erst dann ans Forum wendet. (Wobei ich manchmal auch erst die Frage ins Forum stelle und dann drüber nachdenke) Eigentlich hätte meine Vermutung nicht zutreffen dürfen. Deswegen auch als "Blöde Frage" bezeichnet.Damit ist das Thema für mich durch. Zukünftig kannst Du meine Beiträge einfach ignorieren, ich mache das selbe mit Deinen.

Fuerchau
10-04-14, 15:18
Ich denke solche Kommentare sind in diesem Forum nicht nötig.
"Blöde Frage" hatte ich auf den Antwortgeber bezogen verstanden.
Vielleicht sollte ich die letzte Antwort einfach löschen, un diese natürlich gleich mit:)?