Stefan Schmidt: Einträge mit gleicher ID zusammenfügen

Guten Abend,

bei einer Abfrage einer SQL-Datenbank bekomme ich die Daten in folgender Struktur ausgegeben:

ID    andere_Daten
4     Text
4     Text2
4     Text3
2     Text
7     Text
7     Text2

Eigentlich soll nach der Abfrage für jede ID nur noch eine Zeile stehenbleiben. In der Spalte andere_Daten soll dann der Text, der eigentlich über mehrere Zeilen verteilt ist, zusammengefügt werden:

ID    andere_Daten
4     Text Text2 Text3
2     Text
7     Text Text2

An der Eingabe in der Datenbank kann ich leider nichts ändern.

Hat jemand von euch evtl. einen Lösungsvorschlag?

Danke

Stefan

  1. Naja, Du könntest z.B. alle Einträge mit einer ID, z.B. 4 SELECTen
    und dann mithilfe einer Schleife für jedes dieser Elemente das Element selbst zu einem String hinzufügen, welchen Du vorher geleert hast.

    Lutz

  2. echo $begrüßung;

    Hat jemand von euch evtl. einen Lösungsvorschlag?

    In MySQL ab der Version 4.1 gibt es die Funktion GROUP_CONCAT().

    Wenn dein DBMS nicht erwähntes MySQL 4.1 ist, bzw. keine ähnliche Funktion hat, dann fällt mir nur ein, diese Verknüpfung beim Auslesen der Ergebnismenge in deiner Programmumgebung zu implementieren.

    echo "$verabschiedung $name";

    1. Danke für die Antworten!

      Es handelt sich nicht um MySQL, die Funktion GROUP_CONCAT() ist also nicht unbedingt verfügbar.
      Ich kann die Daten in eine Excel-Tabelle ausgeben lassen. Fällt jemandem vielleicht eine Lösung über Excel ein?

      Grüße

      Stefan

      1. Moin!

        Es handelt sich nicht um MySQL

        Wie wäre es dann mit der Geheimniskrämerei Schluss zu machen? Sollen wir Rätsel raten oder willst _Du_ Antworten?

        MFFG (Mit freundlich- friedfertigem Grinsen)

        fastix®

        --
        Als Freiberufler bin ich immer auf der Suche nach Aufträgen: Schulungen, Seminare, Training, Development
      2. Hallo Stefan,

        Ich kann die Daten in eine Excel-Tabelle ausgeben lassen. Fällt jemandem vielleicht eine Lösung über Excel ein?

        ja, in etwa so:

        Dim strSuchbegriff As String, strAdresse As String, strErsteZelle As String
        Dim objGefunden As Object
        Dim lngZ As Long, lngLetzte As Long, lngErste As Long
        Dim strTemp As String

        lngErste = 2
        lngLetzte = Cells(Rows.Count, 1).End(xlUp).Row

        For lngZ = lngErste To lngLetzte
            strTemp = Cells(lngZ, 2)
            If Cells(lngZ, 1) <> "" Then
                strSuchbegriff = Cells(lngZ, 1)
                Set objGefunden = Columns(1).Find(strSuchbegriff, LookAt:=xlWhole, LookIn:=xlValues)
                If Not objGefunden Is Nothing Then
                    strAdresse = objGefunden.Address(False, False)
                    strTemp = Cells(objGefunden.Row, 2)
                    Cells(objGefunden.Row, 2).ClearContents
                End If
                strErsteZelle = strAdresse
                Do
                    Set objGefunden = Columns(1).Find(strSuchbegriff, LookAt:=xlPart, LookIn:=xlWhole, After:=Range(strAdresse))
                    If Not objGefunden Is Nothing Then
                        strAdresse = objGefunden.Address(False, False)
                        strTemp = strTemp & " " & Cells(objGefunden.Row, 2)
                        Cells(objGefunden.Row, 2).ClearContents
                    Else
                        Exit Do
                    End If
                    If strAdresse = strErsteZelle Then Exit Do
                Loop
                Cells(lngZ, 2) = Trim(strTemp)
            End If
        Next
        For lngZ = lngLetzte To lngErste Step -1
            If Cells(lngZ, 2) = "" Then Rows(lngZ).Delete Shift:=xlUp
        Next

        Die Daten müssen in dem Fall in den Spalten A (ID) und B (andere Texte) ab der Zeile 2 stehen.

        Viele Grüße

        Jörg