Mehrere Spalten in einer Spalte ausgeben

Hallo,

ich habe folgende Datenbankstruktur

Einrichtungen
ID | Bezeichnung

Standorte
ID | Strasse | Nr | PLZ | Ort

Einrichtungen_Standorte
ID | ID_Einrichtung | ID_Standorte

Wie zu erahnen ist, handelt es sich um die M:N Beziehung:

Einrichtung -> Einrichtungen_Standorte -> Standorte

Ich möchte mit MySQL folgendes ausgeben:

Alle Einrichtungen des Standortes (mit z.B. der ID 15). In einer Zelle mit Komma getrennt. Es geht also darum, ohne PHP oder sonstige Hilfsmittel das Ergebnis dynamisch vieler ROWS in einer Zelle auszugeben.

Beispiel:
Standort 14 | Standort 15
HUI, BZU | OOI, HUI, POS

Ist das möglich? Ich find keine passende Funktion dafür… ein „CONCAT((SELECT e.Bezeichnung […] WHERE s.ID = 15)) AS Standort 15“ funktioniert zB nicht dafür.

Ich hoffe das ist verständlich genug geschildert.

Mit freundlichen Grüßen,

Peter Pils

Moin, Peter Pils,

relationale Datenbanken bestehen aus Tabellen, diese aus Spalten und Zeilen. SQL-Operationen können Spalten nebeneinanderstellen und Zeilen untereinander - mehr geht nicht (Selection lassen wir jetzt mal außen vor).

Mit üblen Tricks lassen sich Zeilen zu Spalten ummodeln, das aber auch nur, indem jede einzelne Zeile namentlich angesprochen wird. Bei mehr als zweien kann einen das schon in den Wahnsinn treiben.

Also: Brav programmieren lernen oder eine sequentielle Datei erzeugen, die mit den üblichen Verdächtigen wie perl malträtiert werden kann.

Gruß Ralf

Hallo,

Ist das möglich? Ich find keine passende Funktion dafür… ein
„CONCAT((SELECT e.Bezeichnung […] WHERE s.ID = 15)) AS
Standort 15“ funktioniert zB nicht dafür.

Ich hoffe das ist verständlich genug geschildert.

Mit freundlichen Grüßen,

Peter Pils

Hallo,

Hier findest du ein Beispiel, wie dies zu lösen wäre :

http://en.wikibooks.org/wiki/MySQL/Pivot_table

Gruss

Moin, Peter Pils,

Also: Brav programmieren lernen oder eine sequentielle Datei
erzeugen, die mit den üblichen Verdächtigen wie perl
malträtiert werden kann.

Gruß Ralf

Hi Ralf,

…oder Oracle verwenden :smile:

11g: PIVOT in SQL verwenen
ab 9i :

SELECT deptno,
XMLTRANSFORM (
SYS_XMLAGG (SYS_XMLGEN (ename)),
xmltype(’<?xml version="1.0"?>;’)
).getstringval ()
listagg
FROM scott.emp
GROUP BY deptno
/

Gruss

Da habe wir „parallel“ gedacht…Dies ist derselbe Link, den ich ihm in meiner obenstehenden Antwort gesendent habe :smile:

Gruss