Unbekannte anzahl an Zeilen in Spalten

Sero678

Newbie
Registriert
Juni 2018
Beiträge
5
Die Kontakte bestehen offenbar aus einer Kennung (ID) und dem Kontakt. Also müsste ich Zeilenweise nach ID abfragen so viele IDs wie es geben könnte.
CN8
 
Welches DBMS verwendest du? MySql, Oracle, MS SQLServer, SQLite ... ? Gibt sicher Möglichkeiten das zu realisieren, jedoch wäre es vorher als Info sehr hilfreich. Auch hilfreich wäre ggfs. die Programmiersprache die du verwendest, da bei einigen möglichen Lösungen es notwendig wird mittels auslesen von Cursorn u.ä. das gewünschte Ziel zu erreichen oder soll es ein SQL-Script sein, dass mittels Konsole gestartet wird und magische Dinge tut?
 
Wenn ich mich nicht täusche heisst das Stichwort hier Pivot-Tabelle.... einfach mal googeln...
 
Kein Grund für Pivot.

-- Jedes Ergebnis einer Datenbankabfrage ist notwendigerweise ein zweidimensionales Array ("Tabelle").

-- "Normal" würde man diese von außen nach innen durchgehen:
for i= 1 to Spaltenzahl for j = 1 to Zeilenzahl write Zelle(i, j)

-- Für 90° gedreht machst Du das genau andersherum: erst die Zeilen auflisten, dann die Spalten, und schon hat man das in der Ansicht vertauscht.

Obligatorisches Caveat, wie ja schon festgestellt, normalerweise ist die Zeilenanzahl variabel und die Spaltenanzahl fix, Du mußt also zusätzliche Logik in die Darstellung einbauen, damit nicht die Ergebnisliste albern breit wird.


Pivot könnte man probieren, wird aber umständlich und warum sollte man das machen, wenn es nicht sein muß?
 
Was spricht eigentlich dagegen, das weiter oben zu machen statt in der Datenbank? Und willst du auf die einzelnen Kontakte wahlfrei zugreifen können oder willst du sie eigentlich nur hintereinander mit Leerzeichen aneinandergepappt haben?
 
Hallo Sero678,

bei SQL gibt es so viele Dialekte und Versionen, dass es zwingend notwendig ist, bei der Frage auch dazuzuschreiben, mit welcher Datenbank du arbeitest.
Ich kann Dir ein Beispiel geben, wie es bei MS-SQL-Server funktioniert, die Informationen aus mehreren Zeilen in einer Liste hintereinanderweg auszugeben:
SQL:
-- temporäre Tabelle löschen falls vorhanden
if OBJECT_ID ('tempdb..#a') is not null drop table #a

-- temporäre Tabelle füllen
create table #a (a Char (1))
insert into #a (a) values (1)
insert into #a (a) values (2)
insert into #a (a) values (3)
insert into #a (a) values (4)

-- Normale Ausgabe
select * from #a
--Ausgabe mit Zeilen als Liste
select STUFF ((select ',' + a from #a for xml path ('')), 1, 1, '') as [Zeilen in einer Liste]
Das funktioniert aber nur mit Microsoft SQL-Server und auch erst ab der 2008er Version.
 
Zurück
Oben