======[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}}