Nachdem ich bei meiner ersten Anfrage sehr positiv von den Rückmeldungen überrascht wurde jetzt eine neue Denksportnuss...
Ziel: 3 gejointe Tabellen unter Nutzung von LISTAGG.
Problem: Ich möchte in der LISTAGG Liste keinen doppelten Einträge...
Zur besseren Übersicht meien Spielwiese:
Begriffe: TLN =Teilenummer; KAT_NR = Katalog Nummer;
3 Tabellen
TLN_ZU_BEZ
PK TLN BEZEICHNUNG
1 111111111 Hupe
5 222222222 Tank
6 333333333 Licht
7 444444444 Bremse
3 666666666 Bolzen
2 777777777 Schraube
4 888888888 Blinker
8 999999999 Fenster
TLN_ZU_KAT
PK TLN KAT_NR
1 111111111 1
3 111111111 5
2 111111111 2
5 222222222 7
4 222222222 1
6 333333333 5
7 444444444 1
8 444444444 8
12 666666666 9
11 666666666 8
13 777777777 3
9 888888888 4
10 999999999 2
KAT_ZU_MOD
KAT_NR MODELL
1 A
2 A
5 B
7 C
10 C
8 D
9 D
4 D
6 E
3 F
Etappenziel 1 Teilenummer und zugehöriges MODELL anzeigen funktioniert schon mit:
[code:/]
select distinct
TzB.TLN, LISTAGG(KzM.MODELL,', ') WITHIN GROUP (ORDER BY KzM.MODELL) "KATALOGE"
from TLN_ZU_BEZ TzB
LEFT JOIN TLN_ZU_KAT TzK ON TzB.TLN = TzK.TLN
LEFT JOIN KAT_ZU_MOD KzM ON TzK.KAT_NR =KzM.KAT_NR
GROUP BY TzB.TLN
liefert
TLN KATALOGE
111111111 A, A, B
222222222 C, C
333333333 B
444444444 A, D
666666666 D, D
777777777 F
888888888 D
999999999 A
Ab jetzt hänge ich in der Luft:
Wunsch noch Bezeichnung in die Liste aufnehmen:
[Code:]
select distinct
TzB.TLN, TzB.Bezeichnung, LISTAGG(KzM.MODELL,', ') WITHIN GROUP (ORDER BY KzM.MODELL) "KATALOGE"
from TLN_ZU_BEZ TzB
LEFT JOIN TLN_ZU_KAT TzK ON TzB.TLN = TzK.TLN
LEFT JOIN KAT_ZU_MOD KzM ON TzK.KAT_NR =KzM.KAT_NR
GROUP BY TzB.TLN
liefert Fehler: ORA-00979: Kein GROUP BY-Ausdruck
Weiteres und für mich noch deutlich größeres Problem:
Ich möchte in der Ergebnsiliste keine Doppelten Nennungen ( siehe grüne A/C)
Ziel:
TLN KATALOGE
111111111 A, B
222222222 C
333333333 B
444444444 A, D
666666666 D
777777777 F
888888888 D
999999999 A
Hat jemand einen Hinweis, Link, Idee, Code .... ????
Ziel: 3 gejointe Tabellen unter Nutzung von LISTAGG.
Problem: Ich möchte in der LISTAGG Liste keinen doppelten Einträge...
Zur besseren Übersicht meien Spielwiese:
Begriffe: TLN =Teilenummer; KAT_NR = Katalog Nummer;
3 Tabellen
TLN_ZU_BEZ
PK TLN BEZEICHNUNG
1 111111111 Hupe
5 222222222 Tank
6 333333333 Licht
7 444444444 Bremse
3 666666666 Bolzen
2 777777777 Schraube
4 888888888 Blinker
8 999999999 Fenster
TLN_ZU_KAT
PK TLN KAT_NR
1 111111111 1
3 111111111 5
2 111111111 2
5 222222222 7
4 222222222 1
6 333333333 5
7 444444444 1
8 444444444 8
12 666666666 9
11 666666666 8
13 777777777 3
9 888888888 4
10 999999999 2
KAT_ZU_MOD
KAT_NR MODELL
1 A
2 A
5 B
7 C
10 C
8 D
9 D
4 D
6 E
3 F
Etappenziel 1 Teilenummer und zugehöriges MODELL anzeigen funktioniert schon mit:
[code:/]
select distinct
TzB.TLN, LISTAGG(KzM.MODELL,', ') WITHIN GROUP (ORDER BY KzM.MODELL) "KATALOGE"
from TLN_ZU_BEZ TzB
LEFT JOIN TLN_ZU_KAT TzK ON TzB.TLN = TzK.TLN
LEFT JOIN KAT_ZU_MOD KzM ON TzK.KAT_NR =KzM.KAT_NR
GROUP BY TzB.TLN
liefert
TLN KATALOGE
111111111 A, A, B
222222222 C, C
333333333 B
444444444 A, D
666666666 D, D
777777777 F
888888888 D
999999999 A
Ab jetzt hänge ich in der Luft:
Wunsch noch Bezeichnung in die Liste aufnehmen:
[Code:]
select distinct
TzB.TLN, TzB.Bezeichnung, LISTAGG(KzM.MODELL,', ') WITHIN GROUP (ORDER BY KzM.MODELL) "KATALOGE"
from TLN_ZU_BEZ TzB
LEFT JOIN TLN_ZU_KAT TzK ON TzB.TLN = TzK.TLN
LEFT JOIN KAT_ZU_MOD KzM ON TzK.KAT_NR =KzM.KAT_NR
GROUP BY TzB.TLN
liefert Fehler: ORA-00979: Kein GROUP BY-Ausdruck
Weiteres und für mich noch deutlich größeres Problem:
Ich möchte in der Ergebnsiliste keine Doppelten Nennungen ( siehe grüne A/C)
Ziel:
TLN KATALOGE
111111111 A, B
222222222 C
333333333 B
444444444 A, D
666666666 D
777777777 F
888888888 D
999999999 A
Hat jemand einen Hinweis, Link, Idee, Code .... ????
Zuletzt bearbeitet: