Selektierte Abfrage aus Spalte

heinzeric

Benutzer
Beiträge
12
Hallo Leute,
bin zwar neu hier, hoffe dennoch auf Hilfe.
Ich qäule mich mit der Frage, wie ich aus einer Tabelle, in der die mich interessierenden Daten alle in einer Spalte abgelegt werden, so herausbekommen, dass ich die zusammengehörenden Datensätze in eine z.B. unter Excel nutzbare Tabelle hineinbekommen.
Joomla speichert z. B. Nutzerdaten in Tabellen ab, die folgenden Aufbau haben:

id record element title name type value
1 1 92 Name cf_name Text Meiser
2 1 94 Email cf_email Text email@meiser.de
3 1 98 Message cf_message Textarea Meisewrmann
4 2 92 Name cf_name Text Mosermann
5 2 94 Email cf_email Text moserman@email.net
6 2 98 Message cf_message Textarea
Mosermännchen

SQL sortiert die Zusammengehörigkeit über die Spalte record.
Jetzt will ich aber die Namen in der Spalte value in die Spalte Namen und die dazugehörige eMail-Adresse in der Spalte eMail und die daztugehörige Message in der Spalte Message, um die Daten z. B. zur Erstellung eines Serienbriefes nutzen zu können. Die Exportfunktion gibt dafür kein brauchbares Ergebnis, weil die Daten in der Spalte value immer dort drin bleiben und damit nicht nutzbar sind. Auch ein Tausch in Excel Spalte/Zeile bringt dabei auch keinen Erfolg. Ich sehe eine Lösung nur über eine SQL-Abfrage, doch kann ich nicht die richtigen Befehle finden.
Hat jemand dafür vielleicht eine Idee?
Danke
 
Werbung:

akretschmer

Datenbank-Guru
Beiträge
9.532
Hallo Leute,
bin zwar neu hier, hoffe dennoch auf Hilfe.
Ich qäule mich mit der Frage, wie ich aus einer Tabelle, in der die mich interessierenden Daten alle in einer Spalte abgelegt werden, so herausbekommen, dass ich die zusammengehörenden Datensätze in eine z.B. unter Excel nutzbare Tabelle hineinbekommen.

Hat jemand dafür vielleicht eine Idee?
Danke

Ich hab da eine gute und eine schlechte Nachricht, die Gute:

Code:
test=*# select * from heinzeric ;
 id | record | element |  title  |    name    | type |      value
----+--------+---------+---------+------------+------+-----------------
  2 |      1 | 94      | Email   | cf_email   | text | email@meiser.de
  3 |      1 | 98      | Message | cf_message | text | xyz
  4 |      2 | 92      | Name    | cf_name    | text | Mosermann
  1 |      1 | 92      | Name    | cf_mail    | text | meiser
(4 rows)

Time: 0,211 ms
test=*# select record, array_to_string(array_agg(case when title='Email' then value else '' end),'') as email, array_to_string(array_agg(case when title='Name' then value else '' end),'') as name from heinzeric group by record;
 record |      email      |   name
--------+-----------------+-----------
      1 | email@meiser.de | meiser
      2 |                 | Mosermann
(2 rows)

Die Schlechte Nachricht: das ist PostgreSQL, ob und wie man das nach MySQL portieren kann kann ich Dir nicht sagen, vermutlich aber nicht trivial...


Andreas
 
Werbung:

heinzeric

Benutzer
Beiträge
12
Hallo Andreas,

danke für deine schnelle Antwort. Sie bringt mich aber leider nicht weiter. Die Umsetzung der Abfrage in MySQL ist für mich alles andere als trivial. Somit ist meine Frage also noch offen. Trotzdem danke für die Wegweisung zur Lösung.
Heinz Erich
 
Oben