Hallo!
Ich muss zwei Tabellen in einer MYSQL Datenbank zusammenführen.
Die Tabellen so in etwa aus:
Tabelle 1 (hat 16000 Einträge)
Tabelle 2 ( Hat 45000 Einträge)
Aussehen soll das ganze so:
Zu Erklärung
Die Spalte "product_ids" in Tabelle 1 enhält (kommagetrennt!) die Schlüssel zu den Seriennummern in der Tabelle 2. product_ids können in den einzelnen Zeilen der Tabelle 1 ident sein - dh. im Datensatz 500 kann product_id 5600 vorkommen, im Datensatz 654 kann product_id 5600 auch vorkommen.
In der Tabelle 2 können meherere Zeilen bzw. Datensätze zu product_id (z.B.) 5600 vorkommen.
Mein Problem
Ich benötige nun ein Script oder eine MYSQL-Funktion, die mir zu jedem Datensatz der Tabelle 1 die Seriennummern aus Tabelle 2 sucht und in einer weiteren Spalte der Tabelle 1 (z.B. "Seriennummer") kommagetrennt zusammensetzt. Sprich wenn in der Tabelle zu einer "product_id" beispielsweise mehrere Datensätze vorhanden sind, sollen diese zusammengeführt werden und kommagetrennt in eine spezielle Spalte der Tabelle 1 eingetragen werden.
Ansätze zur Problemlösung
Habe mit GROUP_CONCAT und einer Schleife ein Script erstellt, welches als erstes alle doppelten Datensätze aus Tabelle 2 zusammenführt. Danach wird jeder Datensatz in Tabelle 1 aufgerufen, mittels foreach die Spalte product_ids aufgelöst (damit ich jede product_id einzeln erhalte) und frage mit einer funktion dann die Zeile in der Tabelle 2 ab, welche die gesuchte product_id enthält.
Leider dauert es knapp 10 das Script auszuführen (trotz schnellem Server). Zudem stimmen manche Zeilen nicht dh. es werden product_ids ausgelassen.
Habt ihr eine Lösugn für mich? Ein VIEW mit mysql? Eine direkte MYSQL Funktion? Oder eine Idee für ein PHP-Script?
Bin verzweifelt
Ich muss zwei Tabellen in einer MYSQL Datenbank zusammenführen.
Die Tabellen so in etwa aus:
Tabelle 1 (hat 16000 Einträge)
id | name | produkt_ids |
1 | produkt 1 | 39120,38129,38127,38191 |
2 | produkt 2 | 84798,21003,66191,38991 |
Tabelle 2 ( Hat 45000 Einträge)
id | product_id | seriennummer |
1 | 39120 | sn1,sn2,sn3 |
2 | 38129 | sn4,sn5,sn6 |
2 | 38129 | sn7,sn8,sn9 |
Aussehen soll das ganze so:
id | name | seriennummer |
1 | produkt 1 | sn1,sn2,sn3,... |
2 | produkt 2 | sn7,sn8,sn9,... |
Zu Erklärung
Die Spalte "product_ids" in Tabelle 1 enhält (kommagetrennt!) die Schlüssel zu den Seriennummern in der Tabelle 2. product_ids können in den einzelnen Zeilen der Tabelle 1 ident sein - dh. im Datensatz 500 kann product_id 5600 vorkommen, im Datensatz 654 kann product_id 5600 auch vorkommen.
In der Tabelle 2 können meherere Zeilen bzw. Datensätze zu product_id (z.B.) 5600 vorkommen.
Mein Problem
Ich benötige nun ein Script oder eine MYSQL-Funktion, die mir zu jedem Datensatz der Tabelle 1 die Seriennummern aus Tabelle 2 sucht und in einer weiteren Spalte der Tabelle 1 (z.B. "Seriennummer") kommagetrennt zusammensetzt. Sprich wenn in der Tabelle zu einer "product_id" beispielsweise mehrere Datensätze vorhanden sind, sollen diese zusammengeführt werden und kommagetrennt in eine spezielle Spalte der Tabelle 1 eingetragen werden.
Ansätze zur Problemlösung
Habe mit GROUP_CONCAT und einer Schleife ein Script erstellt, welches als erstes alle doppelten Datensätze aus Tabelle 2 zusammenführt. Danach wird jeder Datensatz in Tabelle 1 aufgerufen, mittels foreach die Spalte product_ids aufgelöst (damit ich jede product_id einzeln erhalte) und frage mit einer funktion dann die Zeile in der Tabelle 2 ab, welche die gesuchte product_id enthält.
Leider dauert es knapp 10 das Script auszuführen (trotz schnellem Server). Zudem stimmen manche Zeilen nicht dh. es werden product_ids ausgelassen.
Habt ihr eine Lösugn für mich? Ein VIEW mit mysql? Eine direkte MYSQL Funktion? Oder eine Idee für ein PHP-Script?
Bin verzweifelt

Zuletzt bearbeitet: