Mit MySQL Agregat Funktion GROUP_CONCAT von M-N Tabelle nach kommaseparierter Liste
Neulich stand ich vor einem interessanten und viel gesehenen Problem: Ich wollte daten migrieren. Die alten Daten waren in der Form M zu N gespeichert (Konkret: tt_content hat eine Spalte in der auf einen tx_t3blog_post verwiesen wird), in der neuen Datenstruktur sollte aber eine kommaseperierte Liste (Jeder tt_news Datensatz kennt alkle seine contentelemente als Liste, rgnewsce) haben.
Statt mühevvoller Handarbeit perfekt gelöst unter beibehaltung der Sortierung:
SELECT tt_news.uid, GROUP_CONCAT( DISTINCT tt_content.uid ORDERBY tt_content.sorting ASC SEPARATOR"," ) as tx_rgnewsce_ce FROM `tt_content` , tt_news WHERE tt_news.uid = tt_content.irre_parentid GROUPBY tt_news.uid
Es werden also alle tt_news Datensätze mit ihren Inhalten verknüpft, diese dann nach der uid Gruppiert. Dann werden die einzelnen Zeilen durch die MySQL Agregatfunktion GROUP_CONCAT kommasepariert zusammengefasst und die ursprüngliche Sortierung sogar noch beibehalten.
Das Ergebnis der MySQL Agregatabfrage kann dann nach Excel exportiert und zu einem Update der Datenbank genutzt werden.
Kommentar hinzufügen