FrenchSpirit
Aktiver Benutzer
- Beiträge
- 41
Hallo liebe Experten,
ich habe ein Problem, an dem ich mir seit ein paar Stunden den Kopf zerbreche. Ich danke euch vorab dafür, dasss ihr meinen etwas längeren Thread lest und hoffe, dass ich es verständlich aufgeschrieben habe. (Leider weiss ich nicht wie ich die Tabellen grafisch skizzieren kann (ggf. Screenshot meines Notizzettels?)
Es gibt folgende Tabellen:
- Tabelle PE (Personendaten)
- Tabelle KTO (Kontendaten, verknüpfbar mit Personendaten)
- Tabelle GKB (Basisdaten Information, verknüpfbar mit Personendaten)
- Tabelle GKD (Detaildaten Information, verknüpfbar über ID zwischen GKB und GKD)
In der Tabelle GKD ist zusätzlich eine Spalte mit einem Wert enthalten, die der Kontonummer entspricht.
In der PE finde ich z.B. die Person 4711
In der KTO finde ich die Info, dass die Person 4711 die Konten 2530 und 5400 hat.
In der GKB finde ich die Info, dass die Person 4711 die INFO ID 1 und die INFO ID 2 hat.
In der GKD finde ich die Info, dass in der INFO ID1 der Wert 2530 in einem bestimten Feld steht. Auch ist in der INFO ID2 irgendwo der Wert 5400 drin.
Dies habe ich mit folgendem SQL hingebkommen:
SELECT
PE.PERSONEN_NR
, KTO.KONTONR
, GKB.GEN_KONSTR_ID
, GKD.WERT_CHAR AS GEKO_KTONR
FROM T_PERSON PE
JOIN Z_KONTEN_ALLE_AZ KTO
ON KTO.PERS_NR = PE.PERS_NR
JOIN GEN_KONSTR_BASIS GKB
ON PE.PERS_NR = GKB.BEZUGS_OBJEKT_ID
AND GKb.SATZART_GP IN (8436)
JOIN GEN_KONSTR_DATEN GKD
ON GKB.GEN_KONSTR_ID = GKD.GEN_KONSTR_ID
AND GKD.FZ = '0020'
AND GKD.WERT_CHAR = KTO.KONTONR
Es wird folgendes Ergebnis geliefert:
PE // KTO // GK ID // INFO
4711 // 2350 // 1 // 02350
4711 // 5400 // 2 // 05400
Mein Problem ist, dass ich anstelle des Joins "irgendwie" einen Leftjoin benötige, da es ja sein kann, dass es zwar das KTO 5400 gibt, es aber in der Tabelle GKB die INFO ID 2 nicht gibt.
Wenn ich beide Male anstelle des JOIN den LEFT JOIN nehme, bekomme ich die Ergebniszeilen potenziert angezeigt:
PE // KTO // GK ID // INFO
4711 // 2350 // 1 // 02350
4711 // 2350 // 2 // 05400
4711 // 5400 // 1 // 02350
4711 // 5400 // 2 // 05400
Das ist sehr unübersichtlich. Wie kann ich es hinbekommen, dass mir definitiv alle Konten (nur Einmal) angezeigt werden, ich in den Ergebnisspalten GK ID und INFO Leerfelder bekomme, wenn eben die INFO ID nicht da ist???
Herzlichen Dank vorab,
Spirit
.
ich habe ein Problem, an dem ich mir seit ein paar Stunden den Kopf zerbreche. Ich danke euch vorab dafür, dasss ihr meinen etwas längeren Thread lest und hoffe, dass ich es verständlich aufgeschrieben habe. (Leider weiss ich nicht wie ich die Tabellen grafisch skizzieren kann (ggf. Screenshot meines Notizzettels?)
Es gibt folgende Tabellen:
- Tabelle PE (Personendaten)
- Tabelle KTO (Kontendaten, verknüpfbar mit Personendaten)
- Tabelle GKB (Basisdaten Information, verknüpfbar mit Personendaten)
- Tabelle GKD (Detaildaten Information, verknüpfbar über ID zwischen GKB und GKD)
In der Tabelle GKD ist zusätzlich eine Spalte mit einem Wert enthalten, die der Kontonummer entspricht.
In der PE finde ich z.B. die Person 4711
In der KTO finde ich die Info, dass die Person 4711 die Konten 2530 und 5400 hat.
In der GKB finde ich die Info, dass die Person 4711 die INFO ID 1 und die INFO ID 2 hat.
In der GKD finde ich die Info, dass in der INFO ID1 der Wert 2530 in einem bestimten Feld steht. Auch ist in der INFO ID2 irgendwo der Wert 5400 drin.
Dies habe ich mit folgendem SQL hingebkommen:
SELECT
PE.PERSONEN_NR
, KTO.KONTONR
, GKB.GEN_KONSTR_ID
, GKD.WERT_CHAR AS GEKO_KTONR
FROM T_PERSON PE
JOIN Z_KONTEN_ALLE_AZ KTO
ON KTO.PERS_NR = PE.PERS_NR
JOIN GEN_KONSTR_BASIS GKB
ON PE.PERS_NR = GKB.BEZUGS_OBJEKT_ID
AND GKb.SATZART_GP IN (8436)
JOIN GEN_KONSTR_DATEN GKD
ON GKB.GEN_KONSTR_ID = GKD.GEN_KONSTR_ID
AND GKD.FZ = '0020'
AND GKD.WERT_CHAR = KTO.KONTONR
Es wird folgendes Ergebnis geliefert:
PE // KTO // GK ID // INFO
4711 // 2350 // 1 // 02350
4711 // 5400 // 2 // 05400
Mein Problem ist, dass ich anstelle des Joins "irgendwie" einen Leftjoin benötige, da es ja sein kann, dass es zwar das KTO 5400 gibt, es aber in der Tabelle GKB die INFO ID 2 nicht gibt.
Wenn ich beide Male anstelle des JOIN den LEFT JOIN nehme, bekomme ich die Ergebniszeilen potenziert angezeigt:
PE // KTO // GK ID // INFO
4711 // 2350 // 1 // 02350
4711 // 2350 // 2 // 05400
4711 // 5400 // 1 // 02350
4711 // 5400 // 2 // 05400
Das ist sehr unübersichtlich. Wie kann ich es hinbekommen, dass mir definitiv alle Konten (nur Einmal) angezeigt werden, ich in den Ergebnisspalten GK ID und INFO Leerfelder bekomme, wenn eben die INFO ID nicht da ist???
Herzlichen Dank vorab,
Spirit
.