Hallo Gemeinde,
Ich muss für meinen Arbeitgeber eine Tabelle consolidieren um diese an ein Internetportal zu exportieren. Leider komme ich bei ein paar Feldern nicht weiter und hoffe mir kann jemand helfen.
Ausgangssituation:
(1 Tabelle mit 3 Spalten)
ID NAME VALUE
1 Colour green
1 Material paper
1 Vendor ZZZ
2 Colour red
Das ganze soll so aussehen:
ID ATTRIBUTES
1 Colour|green;Material|paper;Vendor|ZZZ
2 Colour|red
Ich muss es nun schaffen genau dies in ein SQL Statement zu bringen. Hier geht es natürlich um mehr als nur 4 Datensätze 
Wer kann mir helfen?
Vielen Dank und Gruß
Michael
Hallo Michael,
du musst die Spalten mit der CONCAT Funktion zu einer einzigen Pseudo-Spalte zusammenfassen. „Pseudo“, weil diese Spalte nicht in der DB existiert, sondern nur in deinem Abfrage-Ergebnis. Daher musst du dieser Pseudo-Spalte dann noch den gewünschten Namen geben.
SELECT
ID,
CONCAT(
'Colour|', Colour, ';',
'Material|', Material, ';',
'Vendor|', Vendor
) AS `ATTRIBUTES`
FROM {DEINE\_TABELLE}
WHERE {DEINE\_BEDINGUNGEN}
Der CONCAT Funktion gibt man beliebig viele Argumente - alles Zeichenketten, die aneinandergeklebt werden. Alles in den einfachen Gänsefüßchen sind explizite Strings, die du selbst definierst (inkl. deiner Trennzeichen | und
. Colour, Material, Vendor ohne Gänsefüßchen sind die Werte aus den entsprechenden Tabellenfeldern.
Gruß
Thomas
ps: wenn hilfreich: ich freue mich über Bewertungspunkte. 
Hallo smailbox,
würde es mal mit der concat-Funktion probieren (siehe http://technet.microsoft.com/de-de/library/hh231515… )
schönen Gruß
Stefan
Hallo,
vielleicht so in der Art:
SELECT ‚colour|‘ || tabelle1.colour, ‚material|‘ || tabelle1.material,
‚vendor|‘ || tabelle1.vendor
FROM tabelle1
INSERT INTO tabelle2
Anstelle „||“ muss man in manchen SQL-Dialekten auch die CONCAT()-Funtion verwenden.
Gruß
Erhard
Hallo Zusammen,
vielen Dank für eure guten Antworten. Leider funktioniert das in meinem Fall nicht. Ich habe ein wichtiges Detail vergessen:
Den Inhalt der Spalte „NAME“ ist Variabel. In meinem Fall stehen da im Moment 1000 verschieden Werte. Was bedeutet die CONCAT müsste sich dynamisch aufbauen ?!? o_O
Danke für Eure Unterstützung
Gruß
Michael
Oh, verstehe Dein Dilemma - allerdings wird es wohl mit einem einzelnen Statement nichts werden: das Datenbankdesign gibt es nicht her, es ist nicht optimal.
Muss es unbeding ein einziges Staement sein? Ansonsten würde ich es so angehen:
SELECT id, ‚Colour|‘ || value attribute FROM tabelle1 WHERE name = ‚Colour‘ INTO TEMP tab_c;
SELECT id, ‚Material|‘ || value attribute FROM tabelle1 WHERE name = ‚Material‘ INTO TEMP tab_m;
SELECT id, ‚Vendor|‘ || value attribute FROM tabelle1 WHERE name = ‚Vendor‘ INTO TEMP tab_v;
SELECT tab_c.id,
zab_c.attribute || ‚;‘ ||
tab_m.attribute || ‚;‘ ||
tab_v.attribute
FROM tab_c, tab_m, tab_v
WHERE tab_c.id = tab_m.id AND tab_c.id = tab_v.id;
INTO tabelle2;
Und bist Du sicher, dass die Zieldatei den genannten Aufbau mit zusammengesetzten Attributen so sinnvoll ist?
Gruß
Erhard