Rumah  >  Artikel  >  pangkalan data  >  Bagaimana untuk Menggabungkan Berbilang Baris Anak menjadi Baris Induk Tunggal dalam MySQL Menggunakan GROUP_CONCAT?

Bagaimana untuk Menggabungkan Berbilang Baris Anak menjadi Baris Induk Tunggal dalam MySQL Menggunakan GROUP_CONCAT?

DDD
DDDasal
2024-11-27 17:07:11774semak imbas

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

Menggabungkan Baris Anak menjadi Satu Baris Induk dalam MySQL

Cabaran yang dikemukakan di sini melibatkan menggabungkan data daripada dua jadual: Ordered_Item dan Ordered_Options. Matlamatnya adalah untuk mengeluarkan satu baris untuk setiap item dalam Ordered_Item, termasuk gabungan semua pilihan yang dikaitkan dengan item tersebut daripada Ordered_Options.

Struktur Pangkalan Data

**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

Cadangan Penyelesaian

Percubaan pertanyaan yang disediakan, walaupun tidak betul dari segi sintaksis, menunjukkan pendekatan yang mungkin menggunakan gabungan berbilang. Walau bagaimanapun, penyelesaian yang lebih cekap boleh dicapai menggunakan fungsi GROUP_CONCAT.

GROUP_CONCAT membenarkan penyatuan nilai daripada berbilang baris ke dalam satu rentetan. Pertanyaan berikut menggunakan GROUP_CONCAT untuk mencapai output yang diingini:

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

Output

Id              ItemName       Options

1               Pizza          Pepperoni,Extra Cheese

2               Stromboli      Extra Cheese

Pertimbangan Tambahan

  • Berbilang Pilihan: Penyelesaian ini boleh mengendalikan sebarang bilangan pilihan bagi setiap item tanpa memerlukan pengubahsuaian tambahan pada pertanyaan.
  • Pemangkasan: Jika hasil gabungan melebihi panjang maksimum lalai, pertimbangkan untuk menggunakan SET SESSION group_concat_max_len = 8192; untuk meningkatkan had.

Atas ialah kandungan terperinci Bagaimana untuk Menggabungkan Berbilang Baris Anak menjadi Baris Induk Tunggal dalam MySQL Menggunakan GROUP_CONCAT?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn