MySQL: teilen Sie das Komma getrennte Liste in mehrere Zeilen
Habe ich eine nicht normalisierte Tabelle mit einer Spalte mit einer durch Kommas getrennte Liste, die einen Fremdschlüssel zu einer anderen Tabelle:
+----------+-------------+ +--------------+-------+
| part_id | material | | material_id | name |
+----------+-------------+ +--------------+-------+
| 339 | 1.2mm;1.6mm | | 1 | 1.2mm |
| 970 | 1.6mm | | 2 | 1.6mm |
+----------+-------------+ +--------------+-------+
Möchte ich diese Daten Lesen, in die eine Suchmaschine bietet, dass keine prozedurale Sprache.
So ist es ein Weg, um entweder machen eine Verknüpfung auf diese Spalte oder ausführen einer Abfrage auf diese Daten, fügt entsprechende Einträge in eine neue Tabelle?
Die daraus resultierenden Daten sollten wie folgt Aussehen:
+---------+-------------+
| part_id | material_id |
+---------+-------------+
| 339 | 1 |
| 339 | 2 |
| 970 | 2 |
+---------+-------------+
Ich denken konnte, eine Lösung, wenn die DBMS-unterstützte Funktionen Rückgabe einer MySQL-Tabelle, aber anscheinend nicht.
InformationsquelleAutor der Frage AndreKR | 2010-10-14
Du musst angemeldet sein, um einen Kommentar abzugeben.
In MySQL kann dies erreicht werden, wie unten
Nun, um die Länge durch Komma getrennt vehicle_ids verwenden Sie die folgende Abfrage
Für mehr info besuchen http://amitbrothers.blogspot.in/2014/03/mysql-split-comma-separated-list-into.html
InformationsquelleAutor der Antwort Amit
Ich beantwortet habe zwei ähnliche Fragen in wie vielen Tagen, aber hatte keine Antworten also ich denke, die Leute werden vertröstet, die durch die Nutzung der cursor, aber wie sollte es ein one-off-Prozess, den ich persönlich glaube nicht, dass Angelegenheiten.
Wie gesagt MySQL nicht unterstützt Tabelle Rückgabetypen doch so haben Sie kaum eine andere Möglichkeit als Schleife den Tisch und analysieren das material eine csv-Zeichenfolge und generiert die entsprechenden Zeilen für Artikel und material.
Die folgenden Beiträge vielleicht beweisen, von Interesse:
split-keywords für den post-php-mysql
MySQL Verfahren zum laden von Daten aus staging-Tabelle und anderen Tabellen. Müssen aufgeteilt mehrwertigen Feld in den Prozess
Rgds
InformationsquelleAutor der Antwort Jon Black
MySQL keine temporäre Tabelle wiederverwenden und Funktionen keine Zeilen zurückgeben.
Kann ich nicht finden, alles, was im Stack-Überlauf zu string konvertieren von csv-ganze zahlen in den Zeilen, also schrieb ich meine eigenen in MySQL.
Werden Sie auch brauchen, um die Besetzung zu verschiedenen Typen, wenn Sie nicht mit ints.
InformationsquelleAutor der Antwort
Können Sie auch verwenden, REGEXP
Dies wird helfen, wenn Sie möchten, um nur einen Teil. Nicht die ganze Tabelle natürlich
InformationsquelleAutor der Antwort Matthias