Heim > Datenbank > MySQL-Tutorial > Wie kombiniere ich in MySQL mehrere untergeordnete Zeilen zu einer einzelnen übergeordneten Zeile?

Wie kombiniere ich in MySQL mehrere untergeordnete Zeilen zu einer einzelnen übergeordneten Zeile?

Linda Hamilton
Freigeben: 2024-12-03 01:04:11
Original
689 Leute haben es durchsucht

How to Combine Multiple Child Rows into a Single Parent Row in MySQL?

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
Nach dem Login kopieren

Diese Abfrage erzeugt die folgende Ausgabe:

Id  ItemName         Options
1   Pizza            Pepperoni,Extra Cheese
2   Stromboli        Extra Cheese
Nach dem Login kopieren

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;
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage