======[MySQL] Normalisieren aus Liste====== Wir haben eine Tabelle mit einem Feld, in der Kommasepariert die Ids der Kategorien aufgelistet sind. ===== Ausgangslage ===== Diese Tabelle soll nun mit allen Daten normalisiert werden. list_cat list_data ============= ============= id | name id | list ------------- ------------- 1 | Cat_1 1 | 1,2,3,4 2 | Cat_2 2 | 3,4,5,6 3 | Cat_3 4 | Cat_4 5 | Cat_5 6 | Cat_6 7 | Cat_7 8 | Cat_8 ====== Code ====== Mit dem folgenden SQL kann dies einfach normalisiert werden CREATE TABLE list_zuordnung SELECT dat.id AS datId, cat.id AS catId FROM list_cat AS cat, list_data AS dat WHERE FIND_IN_SET(cat.id, dat.list) ORDER BY dat.id, dat.id Somit haben wir unsere neue Zuordnungstabelle list_zuordnung ============= datId | catId ------------- 1 | 1 1 | 2 1 | 3 1 | 4 2 | 3 2 | 4 2 | 5 2 | 6 {{tag>MySQL}}