Kombinieren mehrerer untergeordneter Zeilen zu einer übergeordneten Zeile in MySQL
Beim Umgang mit strukturierten Tabellen mit verschachtelten Daten kann es nützlich sein, sie zusammenzuführen Mehrere untergeordnete Zeilen können in einer einzigen übergeordneten Zeile zusammengefasst werden, um eine aggregiertere Ansicht der Daten bereitzustellen. Ein häufiges Szenario, in dem dies erforderlich ist, ist die Arbeit mit Auftragsverwaltungssystemen, wie im Beispiel dargestellt.
Betrachten Sie zwei Tabellen: Ordered_Item und Ordered_Options. Die Ordered_Item-Tabelle stellt bestellte Artikel dar, während die Ordered_Options-Tabelle zusätzliche Details oder Optionen enthält, die jedem bestellten Artikel zugeordnet sind. Das Ziel besteht darin, eine Abfrage auszugeben, die die Spalte „Item_Name“ aus der Tabelle „Ordered_Item“ mit den entsprechenden Optionswerten aus der Tabelle „Ordered_Options“ kombiniert, in einer bestimmten Reihenfolge gruppiert und durch Kommas getrennt.
Eine effektive Lösung ist die Verwendung von GROUP_CONCAT von MySQL Funktion, die Werte aus mehreren Zeilen verkettet und nach einer bestimmten Spalte gruppiert. Die folgende Abfrage führt zum gewünschten Ergebnis:
SELECT ordered_item.id AS `Id`, ordered_item.Item_Name AS `ItemName`, GROUP_CONCAT(Ordered_Options.Value) AS `Options` FROM ordered_item JOIN ordered_options ON ordered_item.id = ordered_options.ordered_item_id GROUP BY ordered_item.id
Diese Abfrage erzeugt die folgende Ausgabe:
Id ItemName Options 1 Pizza Pepperoni,Extra Cheese 2 Stromboli Extra Cheese
Die Funktion GROUP_CONCAT stellt sicher, dass die Optionswerte zu einer einzigen Zeichenfolge verkettet und beibehalten werden die Reihenfolge der Optionen basierend auf ihrer Option_Number-Spalte. Diese Methode ist äußerst effizient und kann eine große Anzahl von Optionen verarbeiten, ohne dass eine statische Lösung oder zusätzliche Komplexität in der Abfrage erforderlich ist.
Um Fälle zu verarbeiten, in denen das verkettete Ergebnis die standardmäßige maximale Länge von 1024 Zeichen überschreitet, bietet MySQL Folgendes an die Variable group_concat_max_len. Wenn Sie diese Variable wie unten gezeigt auf einen höheren Wert setzen, werden größere verkettete Zeichenfolgen berücksichtigt:
SET SESSION group_concat_max_len = 8192;
Das obige ist der detaillierte Inhalt vonWie kombiniere ich in MySQL mehrere untergeordnete Zeilen zu einer einzelnen übergeordneten Zeile?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!