-
Update mit zwei Dateien
Hallo AS400-Gemeinde,
habe ein Problem, das hier mit Sicherheit schon besprochen worden ist, aber offensichtlich funktioniert im neuen Forum die Suchfunktion nicht mehr (nur so kann ich es mir erklären, das bei der suche nach "update" kein einziger Treffer gefunden wird).
Möchte ein update machen mit Select über zwei Dateien:
Datei A Datei B
ArtNr1 ArtNr2
Lagerort1 Lagerort2
Update auf Datei B:
Alle Artikel mit Lagerort2(Datei B) <> Lagerort1(Datei A) -> Lagerort2 = Lagerort1 setzen.
Folgende Syntax habe ich probiert:
update dateib set lagerort2 = (select lagerort1 from Dateia, Dateib where artNr1 = ArtNr2 and lagerort1 <> lagerort2)
where exists
(select lagerort1 from Dateia, Dateib where artNr1 = ArtNr2 and lagerort1 <> lagerort2)
Fehlermeldung:
Ergebnis der Anweisung enthält mehr als eine Zeile.
(ArtNr2 ist mehrfach in dateib, ArtNr1 eindeutig, da Teilestamm)
Wie lautet dann die Syntax?
Danke
HS
-
Füge einen DISTINCT in deinem 1. Subselect ein, da du nur den einen Lagerort haben willst.
-
Hatte ich schon versucht, hat leider nichts gebracht.
Bei der Fehlermeldung steht noch:
Fehlerart 2 wurde durch eine Unterauswahl eines Basisprädikats mehr als eine
Zeile erstellt. Es ist nur eine Zeile zulässig.
-
Hallo,
probiers mal mit:
update dateib set lagerort2 = (select lagerort1 from Dateia, where artNr1 = ArtNr2 and lagerort1 <> lagerort2)
Das müßte reichen. Der Select für die Existenz ist m.E. hier überflüssig, ebenso wie die Angabe von DateiB im ersten Select; dieser könnte der Grund für die zusätzliche Ergebniszeile sein.
Ich habe mangels entsprechender Dateien natürlich nicht testen können; deshalb: Vorsicht.
MfG
Klaus Hardy
-
update dateib set lagerort2 = (select distinct lagerort1 from Dateia where artNr2 = ArtNr1)
where artnr2 in (select artnr1 from Dateia) and lagerort2 <> (select lagerort1 from Dateia where artNr1 = ArtNr2)
Das Prüfen kannst du dir allerdings sparen, da ein Update mit dem gleichen Wert ja unschädlich ist:
update dateib set lagerort2 = (select distinct lagerort1 from Dateia where artNr2 = ArtNr1)
where artnr2 in (select artnr1 from dateia)
Der Subselect stellt die Beziehung über die Artikelnr her, distinct ist erforderlich, wenn Dateia mehrere Sätze mit der gleichen Artikelnr und Lagerort hat. Enthält Dateia aber gleiche Artikel mit unterschiedlichen Lagerorten funktioniert das überhaupt nicht.
Die Where-Klausel des Update prüft auf vorhandene Artikel in Dateia, da sonst Null-Werte beim subselect auftreten.
-
Danke euch beiden!
Hat wunderbar geklappt.
Gruß
HS
Similar Threads
-
By mk in forum NEWSboard Programmierung
Antworten: 13
Letzter Beitrag: 13-07-12, 08:53
-
By Bobou in forum IBM i Hauptforum
Antworten: 1
Letzter Beitrag: 22-11-06, 08:26
-
By moskito in forum NEWSboard Programmierung
Antworten: 5
Letzter Beitrag: 30-08-06, 17:30
-
By desti82 in forum IBM i Hauptforum
Antworten: 2
Letzter Beitrag: 04-07-06, 15:25
-
By juniorprog in forum NEWSboard Programmierung
Antworten: 3
Letzter Beitrag: 03-02-06, 11:17
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- You may not post attachments
- You may not edit your posts
-
Foren-Regeln
|
Erweiterte Foren Suche
Google Foren Suche
Forum & Artikel Update eMail
AS/400 / IBM i
Server Expert Gruppen
Unternehmens IT
|
Kategorien online Artikel
- Big Data, Analytics, BI, MIS
- Cloud, Social Media, Devices
- DMS, Archivierung, Druck
- ERP + Add-ons, Business Software
- Hochverfügbarkeit
- Human Resources, Personal
- IBM Announcements
- IT-Karikaturen
- Leitartikel
- Load`n`go
- Messen, Veranstaltungen
- NEWSolutions Dossiers
- Programmierung
- Security
- Software Development + Change Mgmt.
- Solutions & Provider
- Speicher – Storage
- Strategische Berichte
- Systemmanagement
- Tools, Hot-Tips
Auf dem Laufenden bleiben
|
Bookmarks