MacBook Banner 728x90
< stdWrap verwenden und erweitern - Handout zum Vortrag

Mit MySQL Agregat Funktion GROUP_CONCAT von M-N Tabelle nach kommaseparierter Liste

08.05.2010
Lina Wolf

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:

												
  1. SELECT tt_news.uid, GROUP_CONCAT(
  2. DISTINCT tt_content.uid
  3. ORDERBY tt_content.sorting ASC
  4. SEPARATOR","
  5. ) as tx_rgnewsce_ce
  6. FROM `tt_content` , tt_news
  7. WHERE tt_news.uid = tt_content.irre_parentid
  8. 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.

Keine Kommentare

Kommentar hinzufügen

* - Pflichtfeld

*




*