-
SQL left join und where clause
Hi Forum,
ich brauch ein bisschen Hilfe in einer SQL-Frage.
Folgende Problemstellung:
Ich habe eine Reihe Identaufträge gehalten von einer Sammelnummer.
Dazu habe ich über eine Verknüpfung abhängige Unteraufträge.
Ueber den left join schaffe ich es (analog DDS und JDFTVAL) den Identauftrag ohne Unterauftrag anzuzeigen. Soweit so gut. Das Problem fängt dann an, wenn es einen Unterauftrag gibt, dieser aber ein Löschkennzeichen hat. Ueber die where Klausel kann ich den Unterauftrag so nicht ausschliessen, weil dann auch der Identauftrag rausfliegt.
Was ich haben möchte, ist, dass ein gelöschter Unterauftrag gleich wie ein nicht Existierender behandelt wird.
Ich hoffe, ich habe mich klar genug ausgedrückt.
Anbei meine SQL-Statements:
select i.iauftrag, l.uauftrag from identorder as i
left outer join linkorder as l
on i.iauftrag = l.uauftrag
where i.sammelnummer = 1 and i.istatus = 'ok' and l.ustatus = 'ok'
order by i.iauftrag, l.uauftrag;
kf
-
Moin,
nein, ich habe es nicht verstanden
Aber
Was ich haben möchte, ist, dass ein gelöschter Unterauftrag gleich wie ein nicht Existierender behandelt wird.
Warum nicht
where irgendein_feld_aus_unterauftragsdatei is null (--> nicht existent)
or löschkennzeichen_in_unterauftrag ='gelöscht'
Das Notwendige steht über dem technisch machbaren.
(klingt komisch, funktioniert aber!)
-
Merci Robi,
hat geklappt.
kf
-
Du kannst diese Bedingungen auch in der ON-Klausel verwenden. Dies ist ebenso eine Where-Klausel und somit kann ich mir die NULL-Abfrage im Gesamt-Where sparen.
left join Tab2 on Key = Key and Status <> 'D'
-
Hallo Baldur,
Grundsätzlich einverstanden, nur brauch ich die Nullabfrage, wenn gar kein Verknüpfungs-Satz vorhanden ist. (Uebringens inkl. der Fehlerbehandlung des SQL0305 mit dem Nullindikator). Ist halt schon noch ein Unterschied, wenn man die SQL-Abfrage im ACS oder im RPG ausführt. ;-)
kf
-
Die NULL-Abfrage benötigt man nur, wenn man in der Where-Klausel auf Felder des Joins prüft, da sonst automatisch ein Inner-Join draus wird.
Deine Bedingung war ja, Leftjoin-Sätze auszuschließen wenn eine bestimmte Bedingung vorliegt und das kann man in der ON-Klausel ohne NULL-Abfrage machen.
Andere Programmiersprachen kennen i.d.R. keine NULL-Flag sondern die Variable ist meist vom Typ NULLABLE. So kann man "if (Var = NULL)" prüfen.
ILERPG kennt NULL nur bei Pointern.
Similar Threads
-
By ILEMax in forum NEWSboard Programmierung
Antworten: 10
Letzter Beitrag: 10-11-17, 16:21
-
By Miles in forum NEWSboard Programmierung
Antworten: 4
Letzter Beitrag: 26-10-16, 14:40
-
By dibe in forum NEWSboard Programmierung
Antworten: 12
Letzter Beitrag: 20-01-16, 10:30
-
By KingofKning in forum NEWSboard Programmierung
Antworten: 10
Letzter Beitrag: 17-11-14, 14:52
-
By GS in forum IBM i Hauptforum
Antworten: 3
Letzter Beitrag: 21-11-02, 08:51
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