-
Solange du nur 1 Schlüsselfeld hast, geht das ja.
Aber was machst du bei mehr als 1 Schlüsselfeld ?
Häufig hat mandantenfähige Software auf jeder Datei mindestens 2 Schlüsselfelder.
SQL kann leider nur 1 Feld mit 1 Feld im Subselect abfragen.
Daher der Umweg über Concat. Und genau hier helfen keine Zugriffspfade es sei denn nachfolgendes kann verwendet werden:
Was die Geschwindigkeit angeht, so hast du nur teilweise Recht.
In deinem Beispiel wird der Subselect pro Satz ausgeführt, in meinem Beispiel nur 1 Mal.
Für weitere Performancegewinne kann man sowohl den Subselect als auch die Where-Bedingung ergänzen:
delete from mytab1
where key1 concat key2 concat key3 ... not in (select key1 concat key2 concat key3 ... from mytab2 where key1=x and Key2=y and ...)
where Key1=x and Key2=y and ...
Für den Subselect wird ein Zugriffspfad verwendet (wegen where) und eine temporäre Tabelle über die Teildaten aufgebaut.
Ggf. wird dann für den Concat-Key noch ein Pfad aufgebaut (hängt vom Release ab).
-
 Zitat von Fuerchau
Was die Geschwindigkeit angeht, so hast du nur teilweise Recht.
In deinem Beispiel wird der Subselect pro Satz ausgeführt, in meinem Beispiel nur 1 Mal.
Hier muss ich dir natürlich recht geben. Welche Methode die schnellere ist, hängt von den Mengengerüsten ab.
Da auch wir auch "mandantenfähige" Software haben, ist mir die Problematik nicht fremd.
Ich wollte die Möglichkeit hier auch nur anmerken, da bei uns die viele Update/Löschvorgänge (grosse Dateien mit Vorselektion + Subselect) mit dieser Methoder schneller sind.
mfg
Robert P.
-
Nur als Anmerkung:
Mein Tool SQLCPY löst solche Aufgaben auch schnell und problemlos.
-
Danke für eure Tips. Ich hatte mehrere Schlüssel. Hat mit !! (Concat) bestens geklappt. Danke
-
Huch...ein Problem habe ich da noch. Wenn ich mein Statement
PHP-Code:
delete from Bestv/Bestart
WHERE
BEARTN !! BEARTNV !! BELG !! BEFA Not in
(SELECT FSARTN !! FSARTNV !! FSLG !! FSFA as FSKey From TEMP/TMPFSART
)
aus RPG mit embedded SQL aufrufe, bekomme ich immer die Meldung. "Länge der Anweisung überschreitet 32.767 Zeichen."
Wie kann das sein? Das sind doch nicht mal 100?!
-
 Zitat von JonnyRico
Huch...ein Problem habe ich da noch. Wenn ich mein Statement
PHP-Code:
delete from Bestv/Bestart
WHERE
BEARTN !! BEARTNV !! BELG !! BEFA Not in
(SELECT FSARTN !! FSARTNV !! FSLG !! FSFA as FSKey From TEMP/TMPFSART
)
aus RPG mit embedded SQL aufrufe, bekomme ich immer die Meldung. "Länge der Anweisung überschreitet 32.767 Zeichen."
Wie kann das sein? Das sind doch nicht mal 100?!
Das mag jetzt zwar nicht zur Fehlermeldung passen, aber verwende statt !! concat, da !! nicht international ist und evt. auch hier Probleme bereiten könnte!
Birgitta
-
Hallo Birgitta,
danke das mache ich aber leider ist das noch nicht des Rätsels Lösung. Mir ist aber inzwischen aufgefallen, das das bei jedem Delete Statement in embedded SQL passtiert, wo ich eine Where Klausel mit eingeben will. Was mache ich da falsch?
Gruß
Sascha
-
Die "!" sind bei embedded SQL nicht erlaubt. Die STRSQL setzt die ja um.
SQL-richtig wäre "||", aber das ist nicht Code-Sicher (CCSID) !
Deshalb: verwende concat !!!
-
Jo,
hab ich ja gemacht. Nur mein Problem scheint irgendwie das Delete in Embedded SQL zu sein. Wenn ich da eine x-beliebige Where-Klausel einbaue bekomme ich im Prompt schon den Fehler angezeigt
-
Schau mal GENAU deine Quelle an:
c/exex sql
c+ delete
c+ ...
c+ ...
c/end-exec
-
Es sieht genau so aus (Kopie aus Quelle) und es stehen darüber auch noch andere Statements. Da wird nicht gemeckert, aber ich habe es auch schon in einer anderen Quelle mit einem anderen Delete-Statement getestet und ... das selbe Problem
PHP-Code:
C/Exec SQL
C+ delete from Bestv/Bestart WHERE
C+ BEARTN CONCAT BEARTNV CONCAT BELG CONCAT BEFA Not in
C+ (SELECT FSARTN CONCAT FSARTNV CONCAT FSLG CONCAT
C+ FSFA as Key1 From QTEMP/TMPFSART)
C/End-Exec
Similar Threads
-
By christian_lettner in forum NEWSboard Programmierung
Antworten: 2
Letzter Beitrag: 16-11-06, 11:15
-
By FNeurieser in forum NEWSboard Programmierung
Antworten: 3
Letzter Beitrag: 11-10-06, 15:53
-
By malzusrex in forum IBM i Hauptforum
Antworten: 8
Letzter Beitrag: 19-09-06, 12:04
-
By Kaufmann in forum IBM i Hauptforum
Antworten: 11
Letzter Beitrag: 28-06-06, 15:11
-
By loeweadolf in forum NEWSboard Programmierung
Antworten: 2
Letzter Beitrag: 01-06-06, 10:43
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