Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Menggabungkan Berbilang Baris Anak menjadi Baris Induk Tunggal dalam MySQL?

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

Linda Hamilton
Lepaskan: 2024-12-03 01:04:11
asal
708 orang telah melayarinya

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

Menggabungkan Berbilang Baris Anak menjadi Satu Baris Induk dalam MySQL

Apabila berurusan dengan jadual berstruktur yang mempunyai data bersarang, ia boleh berguna untuk menggabungkan berbilang baris anak ke dalam baris induk tunggal untuk memberikan paparan data yang lebih teragregat. Satu senario biasa di mana ini diperlukan ialah apabila bekerja dengan sistem pengurusan pesanan, seperti yang ditunjukkan dalam contoh yang diberikan.

Pertimbangkan dua jadual: Ordered_Item dan Ordered_Options. Jadual Ordered_Item mewakili item yang dipesan, manakala jadual Ordered_Options termasuk butiran tambahan atau pilihan yang dikaitkan dengan setiap item yang dipesan. Matlamatnya adalah untuk mengeluarkan pertanyaan yang menggabungkan lajur Item_Name daripada jadual Item_Pesanan dengan nilai pilihan yang sepadan daripada jadual Ordered_Options, dikumpulkan dalam susunan tertentu dan dipisahkan dengan koma.

Satu penyelesaian yang berkesan ialah menggunakan GROUP_CONCAT MySQL fungsi, yang menggabungkan nilai daripada berbilang baris, dikumpulkan mengikut lajur tertentu. Pertanyaan di bawah mencapai hasil yang diingini:

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
Salin selepas log masuk

Pertanyaan ini akan menghasilkan output berikut:

Id  ItemName         Options
1   Pizza            Pepperoni,Extra Cheese
2   Stromboli        Extra Cheese
Salin selepas log masuk

Fungsi GROUP_CONCAT memastikan bahawa nilai pilihan digabungkan menjadi satu rentetan dan mengekalkan susunan pilihan berdasarkan lajur Option_Number mereka. Kaedah ini sangat cekap dan boleh mengendalikan sejumlah besar pilihan tanpa memerlukan penyelesaian statik atau sebarang kerumitan tambahan dalam pertanyaan.

Untuk mengendalikan kes di mana hasil gabungan melebihi panjang maksimum lalai 1024 aksara, MySQL menyediakan pembolehubah group_concat_max_len. Menetapkan pembolehubah ini kepada nilai yang lebih tinggi, seperti yang ditunjukkan di bawah, akan menampung rentetan bercantum yang lebih besar:

SET SESSION group_concat_max_len = 8192;
Salin selepas log masuk

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

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan