ホームページ > データベース > mysql チュートリアル > MySQL で複数の子行を 1 つの親行に連結するにはどうすればよいですか?

MySQL で複数の子行を 1 つの親行に連結するにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2024-11-28 07:36:13
オリジナル
700 人が閲覧しました

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

MySQL で複数の子行を 1 つの行に連結する

リレーショナル データベースを使用する場合、多くの場合、関連する複数のデータを結合する必要があります。行を 1 つの行にまとめます。このタスクは、MySQL の GROUP_CONCAT 関数を使用して実行できます。

問題ステートメント:

2 つのテーブル、Ordered_Item と Ordered_Options について考えます。 Ordered_Item テーブルには注文された商品が格納され、Ordered_Options テーブルには注文された各商品に関連付けられたオプションが記録されます。目標は、オプションを個別の列として含めて、注文された商品ごとに 1 行を出力するクエリを作成することです。

解決策:

次のクエリは行を結合します。 GROUP_CONCAT 関数を使用して、Ordered_Item テーブルと Ordered_Options テーブルから取得します。

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;
ログイン後にコピー

このクエリでは、 GROUP_CONCAT 関数を使用して、Ordered_Options テーブルの Value 列の値をカンマで区切って連結します。連結された値は、出力のオプション列に割り当てられます。

出力:

クエリの出力は次のようになります:

| Id | ItemName | Options |
| --- | -------- | ------- |
| 1  | Pizza    | Pepperoni,Extra Cheese |
| 2  | Stromboli | Extra Cheese |
ログイン後にコピー

注:

順序の潜在的な違いに対応するためオプションの場合は、GROUP_CONCAT を使用して値を連結する前に、CASE ステートメントを使用して Option_Number で値を並べ替えることを検討してください。

以上がMySQL で複数の子行を 1 つの親行に連結するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート