Entwickler-Ecke

Datenbanken (inkl. ADO.NET) - SQL-Ansicht mit mehreren Ergebnissen in einer Spalte zeigen


Habak - Do 23.12.10 23:25
Titel: SQL-Ansicht mit mehreren Ergebnissen in einer Spalte zeigen
Guten Abend,

als SQL-Laie würde ich gerne wissen, ob es möglich ist, 1:n Beziehungen in einer Abfrage oder SQL-Ansicht auch als EIN Ergebnis darzustellen.
Folgendes Beispiel:
Über mehrere Tabellen sind dem Landstrich "Alpen" z.B. die Länder "Deutschland", "Österreich", "Frankreich", "Italien" zugeordnet.
Bei einer normalen Abfrage bekomme ich als Ergebnis für den Landstrich "Alpen" und die zugehörigen Länder folgende Auflistung:

Alpen Deutschland
Alpen Österreich
Alpen Frankreich
Alpen Italien

Gibt es eine Möglichkeit dies mit einer Abfrage oder Ansicht auch so darzustellen:

Alpen Deutschland, Österreich, Frankreich, Italien

d.h. die Länder "einfach" aneinandergereiht.

Vielen Dank schon im voraus.
(Nicht nur der Weihnachtsmann weiß eine Antwort zu würdigen)

Habak


Kha - Do 23.12.10 23:31

Wozu sollte das gut sein? Für solche kosmetischen Änderungen an Daten ist die GUI-Ebene zuständig und sicher nicht der DB-Server.


Trashkid2000 - Fr 24.12.10 11:30

Hallo,
es kommt natürlich darauf an, mit was für einen Server Du arbeitest.
Habe mal eine Seite mit einem guten Beispiel gefunden:
http://www.nigelrivett.net/SQLTsql/CSVStringFromTableEntries.html

Auf Dein konkretes Beispiel würde es dann so in etwa aussehen:

SQL-Anweisung
1:
2:
3:
4:
5:
6:
declare @csv varchar(1000)
select @csv = coalesce(@csv+', ''') + l.Land
from Landstrich ls Inner Join Land l
ON ls.LandId = l.LandId
where ls.Landstrich = 'Alpen'
Select @csv;
Ansonsten gebe ich user profile iconKha Recht, dass es vielleicht ganz gut wäre, dies in der Anwendung zu realisieren.
LG


Habak - So 26.12.10 19:31

Hallo Marko,

vielen Dank für die Antwort. Ich werde versuchen, das Beispiel die nächsten Tage umzusetzen.
Ich arbeite mit Visual Studio C# und daher indirekt mit dem MS SQL Server.
Hintergrund meiner Frage ist, dass ich mittels DataGridView eine Tabelle anzeigen will. Damit diese übersichtlicher ist, möchte ich die meist mehreren Länder eines Landstriches in einer eigenen Spalte als Aufzählung anzeigen.
Da nach meinem Kenntnisstand das DataGridView nur eine Tabelle anzeigen kann, muss ich daher versuchen die Länderdaten in eine Spalte zu schreiben.
Eine andere Möglichkeit ist mir bisher nicht bekannt.

Daher erst mal Danke. Ich gebe Bescheid, wie ich mit der Lösung vorankomme.

Viele Grüße

Habak


Habak - So 02.01.11 16:26

Hallo Marko,

zu aller erst wünsche ich Dir ein gutes neues Jahr.
Ich habe mich nun mehrere Tage durch das Thema Funktionen in Verbindung mit Visual Studio gequält. Dabei musste ich feststellen, dass die Dokumentation sehr dürftig ist. Nachdem ich mit herumprobieren auch nicht zum Ziel gelangt bin, habe ich einfach eine zweite Tabelle erstellt, in der die Länder nun als ein String eingefügt werden. Das ist sicherlich nicht die eleganteste Lösung, fuktioniert aber.

Nochmals vielen Dank.

Viele Grüße

Habak