Einträge mit gleicher ID zusammenfügen
Stefan Schmidt
- datenbank
0 Lutz Fechner0 dedlfix0 Stefan Schmidt0 fastix®0 Jörg Lorenz
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
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
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";
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
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®
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