Announcement

Collapse
No announcement yet.

Hauptdatensatz mit Unterdatensätzen in Gruppen anzeigen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Hauptdatensatz mit Unterdatensätzen in Gruppen anzeigen

    Hallo, ich habe zwei Tabellen, (TabelleBands und TabelleSongs), die vereinfacht in etwa so aufgebaut sind:

    TabelleBands:
    Code:
    Spalten(Id, BandName)
    
    1	'PinkFloyd'
    2	'RHCP'
    3	'The Clash'
    4	...
    TabelleSongs:
    Code:
    Spalten(Id, RelId, SongName)
    
    1	1	'Wish you were here'
    2	1	'Another Brick in the Wall'
    3	1	'Time'
    4	...	...
    5	...	...
    6	2	'Give It Away'
    7	2	'Under the Bridge'
    8	2	'Otherside'
    9	2	'Californication'
    10	...	...
    11	...	...
    12	3	'London calling'
    13	3	'Should I stay or should I go'
    14	3	'Rock the casbah'
    15	...	...
    16	...	...
    17	2	'Dani California'
    18	1	'Money'
    19	3	'This is Radio Clash'
    20	...	...

    Problemlos ausgeben kann ich nun Ergebnislisten in der Form:

    Ergebnisliste1:
    Code:
    Spalten(BandName, SongName)
    
    PinkFloyd	Wish you were here
    PinkFloyd	Another Brick in the Wall
    PinkFloyd	Time
    PinkFloyd	Money
    RHCP		Give It Away
    RHCP		Under the Bridge
    RHCP		Otherside
    RHCP		Californication
    RHCP		Dani California
    The Clash	London calling
    ...		...
    Nun würde ich aber gerne diese Liste so ausgeben, dass der Bandname nur einmal am Anfang der jeweiligen Gruppe angezeigt wird, also so:

    Ergebnisliste2:
    Code:
    Spalten(BandName, SongName)
    
    PinkFloyd	Wish you were here
    		Another Brick in the Wall
    		Time
    		Money
    RHCP		Give It Away
    		Under the Bridge
    		Otherside
    		Californication
    		Dani California
    The Clash	London calling
    		Should I stay or should I go
    ...		...
    Ist das mit SQL irgendwie möglich und falls ja wie?
    (Bzw. gibt es dafür eine vergleichweise "einfache" Lösung?)

    Gruss
    JSR

  • #2
    Je nach SQL Server könnte ich hier mir ein "FOR XML" vorstellen.
    Aber du willst es doch irgendwo Anzeigen/Ausdrucken. Lass die GUI-Komponente das doch erledigen.

    Comment


    • #3
      mit Analytischen Funktionen und CASE
      z.B: MSSQL 2005:

      CASE WHEN RowNumber () OVER (Partition BandName ORDER BY BandName, Songname) = 1
      THEN BandName
      END

      Comment


      • #4
        Originally posted by ebis View Post
        mit Analytischen Funktionen und CASE
        z.B: MSSQL 2005:

        CASE WHEN RowNumber () OVER (Partition BandName ORDER BY BandName, Songname) = 1
        THEN BandName
        END
        @ebis
        Ah prima, genau auf so was hatte ich spekuliert!
        Fazit: Kann man also schon mit wenigen Zeilen übersichtlich machen, aber nur wenn einem der SQL-Interpreter solche Funktionen auch anbietet. Danke!

        @Bernhard Geyer
        Klar natürlich gehts um die Anzeige der Daten, ich zeige die Daten über ein .Net DataGridView (<-BindingSource<-DataTable<-DataAdapter<-DataBase) an. Ich schaffe es auch die "überzähligen" Bandnamen im DataGridView "auszublenden", das kam mir aber alles sehr hausbacken vor, deshalb wollte ich wissen ob man das bereits auf der SQL-Ebene machen kann.

        Comment


        • #5
          Originally posted by JSR View Post
          ...Ich schaffe es auch die "überzähligen" Bandnamen im DataGridView "auszublenden", das kam mir aber alles sehr hausbacken vor, deshalb wollte ich wissen ob man das bereits auf der SQL-Ebene machen kann.
          Hallo,

          da ist die Frage was man als "Hausbacken" definiert. SQL ist eine Abfragesprache für Datenmenge, keine Reportengine und erst recht nicht für Formatierungen der Ergebnismenge zuständig. Ich persönlich würde deshalb die Formatierungsmethode mit SQL als "Hausbacken" und die Gruppierung und Aufbereitung in der Applikation als korrekt bezeichnen!

          Gruß Falk
          Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

          Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

          Comment

          Working...
          X