Hopsel: (MSSQL 2005) Mehrere Zeilen als Array oder Liste zurückgeben

Hi alle!

Ich erkläre mein Problem am besten an einem Beispiel.
Tabelle User (id, name)
Tabelle Gruppe (id, name)
Tabelle User_Gruppe (id, user_id, gruppe_id)

Mit

SELECT U.name  
FROM User U

bekomme ich alle User.

Mit

SELECT G.name  
FROM Gruppe G  
  JOIN User_Gruppe UG  
  ON  G.id=UG.gruppe_id AND  
      UG.user_id=BESTIMME_ID

bekomme ich alle Gruppen, denen ein bestimmter User angehört.

Mit

SELECT U.id,G.id  
FROM User U  
  LEFT JOIN Gruppe G  
    INNER JOIN User_Gruppe UG  
    ON G.id=UG.gruppe_id  
    ON UG.user_id=U.id

bekomme ich für jeden User so viele Zeilen, wie er Gruppen angehört, mindestens jedoch eine Zeile (LEFT OUTER JOIN).

Für meinen Zweck brauche ich für jeden User genau eine Zeile.

Schön wäre es, wenn ich für jeden User sowas wie eine Liste oder ein Array hätte, indem alle Gruppen aufgelistet sind, denen der User angehört.
Hat jemand eine Idee, wie das realisiert werden kann?

MfG H☼psel

--
"It's amazing I won. I was running against peace, prosperity, and incumbency."
George W. Bush speaking to Swedish Prime Minister unaware a live television camera was still rolling, June 14, 2001
Selfcode: ie:% fl:( br:> va:) ls:& fo:) rl:? n4:& ss:| de:] js:| ch:? sh:( mo:) zu:)
  1. Hi,

    Schön wäre es, wenn ich für jeden User sowas wie eine Liste oder ein Array hätte, indem alle Gruppen aufgelistet sind, denen der User angehört.
    Hat jemand eine Idee, wie das realisiert werden kann?

    Ja, du kannst ein User Defined Aggregate in .Net Code (CLR) schreiben, welches dir die Informationen als komma-separierten String aggregiert.

    Ciao, Frank

    1. Hi Frank,

      danke für deine Antwort!

      Schön wäre es, wenn ich für jeden User sowas wie eine Liste oder ein Array hätte, indem alle Gruppen aufgelistet sind, denen der User angehört.
      Hat jemand eine Idee, wie das realisiert werden kann?
      Ja, du kannst ein User Defined Aggregate in .Net Code (CLR) schreiben, welches dir die Informationen als komma-separierten String aggregiert.

      Hmm, nicht das, was ich mir erhoffte, auch wenn ich darauf vorbereitet war. =)
      Dann kann ich diesen Punkt (in meinem Fall) auch gleich in das Programm, das mit der Datenbank arbeitet, auslagern.
      Ich habe gehofft, es gäbe einen trivialen und kurzen Weg über eine vordefinierte Aggregatfunktion oder etwas ähnliches...

      MfG H☼psel

      --
      "It's amazing I won. I was running against peace, prosperity, and incumbency."
      George W. Bush speaking to Swedish Prime Minister unaware a live television camera was still rolling, June 14, 2001
      Selfcode: ie:% fl:( br:> va:) ls:& fo:) rl:? n4:& ss:| de:] js:| ch:? sh:( mo:) zu:)
      1. Mir ist da leider keine "GROUP_CONCAT()" ähnliche eingebaute Aggregatsfunktion bekannt.

        Array können ja sowieso momentan noch nicht nativ in SQL 2005 abgebildet werden, von daher käme als serialisierte Repräsentation eh nur die Trennzeichen-separierte Darstellung in Frage.

        Ciao, Frank