Information ausblenden
Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm

Selektierte Abfrage aus Spalte

Dieses Thema im Forum "MySQL und MariaDB" wurde erstellt von heinzeric, 1 April 2013.

  1. heinzeric

    heinzeric Benutzer

    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
     
  2. akretschmer

    akretschmer Datenbank-Guru

    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
     
  3. heinzeric

    heinzeric Benutzer

    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
     
Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden