Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] mysql->Datensatzewerte in einer Spalte Verketten

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [Erledigt] mysql->Datensatzewerte in einer Spalte Verketten

    Hallo zusammen

    Ich möchte gerne eine Auswertung machen. Ich habe mehrere Pferde und diese können mehrere Aufgaben besitzen. Nun möchte ich gerne Wissen, ob man die Aufgaben des Pferds in einer Spalte wiedergeben kann?!

    Normale Ansicht:
    Pferd, Aufgabe
    Paul, Ausbildung
    Paul, Besamung
    Frieda, Ausbildung
    Gusto, Schule
    Gusto, Pacht
    Gusto, Extern

    Ich möchte gerne so eine Ansicht haben:
    Paul, Ausbildung / Besamung
    Frieda, Ausbildung
    Gusto, Schule / Pacht / Extern

    Ich dachte mir, dass das vielleicht mit einem Group By und der passenden Aggregationsfunktion funktionieren könnte. Ich habe bisher leider keine Lösung gefunden Ich weiß jedoch, dass es in MSSQL geht.


    MSSQL sieht wie folgt aus:
    CREATE TABLE #Test ( ID INTEGER IDENTITY (1,1) NOT NULL PRIMARY KEY
    , NachName VARCHAR (50)
    , VorName VARCHAR (50)
    , KtoNr VARCHAR (20)
    , BLZ VARCHAR (
    , GutSchriftnr VARCHAR (12)
    , GutSchriftBetrag NUMERIC (12,2)
    );

    INSERT INTO #TEST (NachName, Vorname, KtoNr, BLZ, Gutschriftnr, GutSchriftBetrag) VALUES ('Meier', 'Hans', '342875982', '70080000', '4441', 70.00);
    INSERT INTO #TEST (NachName, Vorname, KtoNr, BLZ, Gutschriftnr, GutSchriftBetrag) VALUES ('Müller', 'Bruno', '3498502', '70090000', '4442', 70.00);
    INSERT INTO #TEST (NachName, Vorname, KtoNr, BLZ, Gutschriftnr, GutSchriftBetrag) VALUES ('Zeller', 'Brigitte', '34587', '70070010', '4443', 70.00);
    INSERT INTO #TEST (NachName, Vorname, KtoNr, BLZ, Gutschriftnr, GutSchriftBetrag) VALUES ('Meier', 'Hans', '342875982', '70080000', '4444', 70.00);
    INSERT INTO #TEST (NachName, Vorname, KtoNr, BLZ, Gutschriftnr, GutSchriftBetrag) VALUES ('Filser', 'Thomas', '394570239', '70040030', '4445', 70.00);
    INSERT INTO #TEST (NachName, Vorname, KtoNr, BLZ, Gutschriftnr, GutSchriftBetrag) VALUES ('Meier', 'Hans', '342875982', '70080000', '4446', 70.00);


    SELECT Distinct NachName, Vorname, LEFT(GuschriftenListe
    , LEN(GuschriftenListe)-1) AS GuschriftenListe
    FROM #test t
    CROSS APPLY
    (SELECT GutSchriftnr + ','
    FROM #Test tList
    where tList.Vorname = t.Vorname AND tList.Nachname = t.Nachname
    ORDER BY T.GutSchriftnr
    FOR XML PATH('')) AS x(GuschriftenListe)

    ergibt

    NachName Vorname GuschriftenListe
    --------------- --------------- ------------------
    Filser Thomas 4445
    Meier Hans 4441,4444,4446
    Müller Bruno 4442
    Zeller Brigitte 4443

    (4 Zeile(n) betroffen)

    Quelle: Transponieren für DTA Datei - Entwickler-Forum

    Ich hoffe ihr könnt mir weiterhelfen Vielen Dank im voraus

    Gruß
    Wirbelwurm


  • #2
    Dein Problem ist ziemlich analog zu dem hier: http://www.php.de/datenbanken/69850-...b-es-geht.html

    Kommentar


    • #3
      Super

      Vielen Dank!

      Es funktioniert mit GROUP_CONCAT().

      So sieht man Sql-Code aus:
      Code:
      SELECT 
        s_pferd_lebensnummer,
        s_pferd_name, s_besitzer_nachname, 
        s_besitzer_vorname,
        GROUP_CONCAT(s_zweck_kuerzel) as zwecke 
      
      FROM 
        ((pferde LEFT JOIN besitzer ON i_pferd_besitzer_id = i_besitzer_id) 
        LEFT JOIN pferdezwecke ON i_pferd_id = i_pferdezweck_pferd_id) 
        LEFT JOIN zwecke ON i_pferdezweck_zweck_id = i_zweck_id
      
      Group by i_pferd_id

      Kommentar

      Lädt...
      X