User Tools

Site Tools


mysql:normalizefromlist

[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
mysql/normalizefromlist.txt · Last modified: 28.08.2015 09:34:46 by yaslaw