1.8k Aufrufe
Gefragt in Skripte(PHP,ASP,Perl...) von
Hallo zusammen

Ich brauche ein SQL-Statement, mit welchem ich ein Feld in einer Tabelle updaten kann...

In Tabelle tabellea stehen u.a. folgende Informationen:

- Artikel
- Artikel-Art
- Artikel-Zusatzart
- Artikel-Info
- Artikel-Typ


In Tabelle tabelleb stehen auch diese Felder drin.
In Tabelle tabelleb heisst das Feld, das ich abfüllen will Artikel-Information.

Nun will ich das Feld Artikel-Information in Tabelle tabelleb mit den Werten von tabellea.Artikel-Info abfüllen.

Anscheinend denke ich irgendwie in die falsche Richtung, denn mein folgendes Script funktioniert nicht:

update tabelleb
set iexs = ( select a.Artikel-Info from tabellea a, tabelleb b
where a.artikel = b.artikel
and a.artikel-art = b.artikel-art
and a.artikel-zusatzart = b.artikel-zusatzart
and a.artikel-typ = 'ISI' )
where exists ( select 1 from tabellea a, tabelleb b
where a.artikel = b.artikel
and a.artikel-art = b.artikel-art
and a.artikel-zusatzart = b.artikel-zusatzart
and a.artikel-typ = 'ISI' )


Das bringt mir nur folgende Fehlermeldung:

[1]: ORA-01427: Unterabfrage für eine Zeile liefert mehr als eine Zeile

Wäre dankbar, wenn mir da jemand meinen Knoten lösen könnte.

Gruss Rolf

2 Antworten

0 Punkte
Beantwortet von worm2012 Einsteiger_in (25 Punkte)
Oups, da hat sich im Beispiel ein Fehler eingeschlichen...

Meinte natürlich:

update tabelleb
set Artikel-Information = ( select a.Artikel-Info from tabellea a, tabelleb b
where a.artikel = b.artikel
and a.artikel-art = b.artikel-art
and a.artikel-zusatzart = b.artikel-zusatzart
and a.artikel-typ = 'ISI' )
where exists ( select 1 from tabellea a, tabelleb b
where a.artikel = b.artikel
and a.artikel-art = b.artikel-art
and a.artikel-zusatzart = b.artikel-zusatzart
and a.artikel-typ = 'ISI' )


Gruss Rolf
0 Punkte
Beantwortet von worm2012 Einsteiger_in (25 Punkte)
So, hab's nun selbst rausgefunden ... hier das richtige SQL-Statement, falls es jemanden interessiert:

update tabelleb b
set Artikel-Information = ( select a.Artikel-Info from tabellea a
where a.artikel = b.artikel
and a.artikel-art = b.artikel-art
and a.artikel-zusatzart = b.artikel-zusatzart
and a.artikel-typ = 'ISI' )
where exists ( select 1 from tabellea a
where a.artikel = b.artikel
and a.artikel-art = b.artikel-art
and a.artikel-zusatzart = b.artikel-zusatzart
and a.artikel-typ = 'ISI' )

Der Alias-Name "b" muss beim Update oben stehen und danach nicht mehr in den Unterabfragen.
...