Heim  >  Artikel  >  Datenbank  >  Wie kombiniere ich mit GROUP_CONCAT mehrere untergeordnete Zeilen zu einer einzelnen übergeordneten Zeile in MySQL?

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

DDD
DDDOriginal
2024-11-27 17:07:11775Durchsuche

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

Untergeordnete Zeilen in einer übergeordneten Zeile in MySQL kombinieren

Die hier vorgestellte Herausforderung besteht darin, Daten aus zwei Tabellen zu kombinieren: Ordered_Item und Ordered_Options. Das Ziel besteht darin, für jeden Artikel in Ordered_Item eine einzelne Zeile auszugeben, einschließlich einer Verkettung aller diesem Artikel zugeordneten Optionen aus Ordered_Options.

Datenbankstruktur

**Ordered_Item**
ID | Item_Name
1  | Pizza
2  | Stromboli

**Ordered_Options**
Ordered_Item_ID | Option_Number | Value
1               43         Pepperoni
1               44         Extra Cheese
2               44         Extra Cheese

Vorgeschlagene Lösung

Der bereitgestellte Abfrageversuch ist zwar nicht syntaktisch korrekt, zeigt aber a Möglicher Ansatz mit mehreren Joins. Eine effizientere Lösung kann jedoch mit der Funktion GROUP_CONCAT erreicht werden.

GROUP_CONCAT ermöglicht die Verkettung von Werten aus mehreren Zeilen in einer einzigen Zeichenfolge. Die folgende Abfrage verwendet GROUP_CONCAT, um die gewünschte Ausgabe zu erzielen:

select
  ordered_item.id as `Id`,
  ordered_item.Item_Name as `ItemName`,
  GROUP_CONCAT(Ordered_Options.Value) as `Options`
from
  ordered_item,
  ordered_options
where
  ordered_item.id=ordered_options.ordered_item_id
group by
  ordered_item.id

Ausgabe

Id              ItemName       Options

1               Pizza          Pepperoni,Extra Cheese

2               Stromboli      Extra Cheese

Zusätzliche Überlegungen

  • Mehrere Optionen: Diese Lösung kann eine beliebige Anzahl von Optionen pro Artikel verarbeiten, ohne dass dies erforderlich ist zusätzliche Änderungen an der Abfrage.
  • Kürzung: Wenn das verkettete Ergebnis die standardmäßige maximale Länge überschreitet, erwägen Sie die Verwendung von SET SESSION group_concat_max_len = 8192; um das Limit zu erhöhen.

Das obige ist der detaillierte Inhalt vonWie kombiniere ich mit GROUP_CONCAT mehrere untergeordnete Zeilen zu einer einzelnen übergeordneten Zeile in MySQL?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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