übersichtliche Darstellung beim Join

modele_h

Neuer Benutzer
Beiträge
4
ich habe ein Problem, das eigentlich ganz einfach aussieht, ich habe aber bisher noch keine Lösung gefunden - (bei der Internet-Suche wußte ich nicht so recht, welche Suchbegriffe ich eingeben sollte) - vielleicht stehe ich auch einfach nur auf der Leitung. Ich wäre froh, wenn mir jemand die Erleuchtung geben würde
Ich möchte einfach nur der Übersichtlichkeit halber das Ergebnis eines join-SQLs so ändern, daß das Ergebnis der ersten Tabelle nur einmal angezeigt wird (siehe Beispiel unten). Das Ergebnis ist dann für eine ausgedruckte Liste, die manuell abgearbeitet werden muß, wesentlich übersichtlicher. Kann man das in einem SQL machen, oder muß man da eine kleine PL/SQL-Routine schreiben? Vielen Dank für jede Hilfe!

Tabelle 1
ID NAME
A Name_A
B Name_B
C Name_C
D Name_D
E Name_E

Tabelle 2
ID Feld 1 Feld 2
A 1 2001
A 2 2002
A 3 2003
C 4 2004
D 5 2005
D 6 2006
D 7 2007
E 8 2008
E 9 2009

gewünschtes Ergebnis
Name_A 1 2001
______ 2 2002
______ 3 2003
Name_C 4 2004
Name_D 5 2005
_______6 2006
_______7 2007
Name_E 8 2008
_______9 2009
 
Werbung:
Code:
test=*# select * from t1;
 id |  name
----+--------
 a  | name_a
 b  | name_b
 c  | name_c
(3 rows)

test=*# select * from t2;
 id | feld1
----+-------
 a  | a1
 a  | a2
 a  | a3
 b  | b1
 b  | b2
 c  | c1
(6 rows)

test=*# select case when r=1 then id else '' end as id, feld1 from ( select t1.id, t2.feld1, row_number() over (partition by t1.id) as r from t1 left join t2 on t1.id=t2.id) foo;
 id | feld1
----+-------
 a  | a1
  | a2
  | a3
 b  | b1
  | b2
 c  | c1
(6 rows)
 
So?
Code:
Select decode(row_number() over(Partition By t2.id Order By t2.feld_1 Asc, t2.feld_2 Asc), 1, t1.name, '') As "name"
       ,t2.feld_1
       ,t2.feld_2
From   tabelle_1 t1

Inner  Join tabelle_2 t2
On     t2.id = t1.id

Order  By t2.feld_1 Asc
         ,t2.feld_2 Asc
 
Wahnsinn - vielen Dank für Eure beiden Antworten
beide Möglichkeiten funktionen wunderbar (bei der ersten Lösung von von akretschmer mußte ich nur noch das order by hinzusetzen)
Hut ab, diese Funktionalität war mir noch unbekannt und ich werde versuchen, mir das anzueignen.
(ich brauchte 20 Minuten, bis ich die SQLs so einigermaßen verstanden hatte ....)
nochmals Danke für Eure schnellen Antworten - kann ich heute gleich umsetzen
 
eine kleine Frage habe ich noch zu diesem Thema - vielleicht könnt Ihr mir da nochmals helfen
Das Ergebnis sieht sehr gut aus, solange ich kein 'order by' am Ende des SQLs verwende - was ja auch Sinn macht, denn sonst würde ja auch der ganze Aufwand für die optimale Darstellung wieder futsch gemacht.
Wie kriege ich es aber hin, daß ich eine Sortierreihenfolge in den nachfolgenden Spalten habe. Angenommen FELD_2 ist ein Datumsfeld und ich will das Ergebnis danach sortieren
 
Habs' gefunden - kann die weiteren Spalten direkt in das orderby des over-Partion-statememts erfassen.
Funktioniert, verstehe aber noch nicht so recht, warum eigentlich
 
Werbung:
Zurück
Oben