ホームページ >データベース >mysql チュートリアル >Informix で 1 対多の関係を一意の列に連結するにはどうすればよいですか?

Informix で 1 対多の関係を一意の列に連結するにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2025-01-01 11:22:10681ブラウズ

How to Concatenate One-to-Many Relationships into Unique Columns in Informix?

Informix で 1 対多の関係を一意の列として連結する

1 対多の関係を 2 つの一意の列に変換するには、特定のデータベースが必要です関数と構文。この質問では、参照されている StackOverflow の質問で説明されているアプローチと同様に、Informix SQL を使用してこの変換を達成する方法を検討します。

ユーザー定義の集計関数

提案された解決策には次のものが含まれます。 group_concat という名前のユーザー定義集計関数を作成します。この関数は 4 つのサブ関数を使用します。

  • gc_init: 空の文字列を初期化します。
  • gc_iter: 値をカンマで区切って文字列に繰り返し追加します。
  • gc_comb : 異なる結果から生成された部分的な結果を結合します。
  • gc_fini: 最終的に連結された文字列を返します。

Query for Concatenation

一意の ID ごとにコードを連結するには、次のコマンドを実行します。次のquery:

SELECT id, group_concat(codes)
FROM anonymous_table
GROUP BY id;

サンプル テーブルと結果

サンプル テーブル anonymous_table には、複数の ID の重複コードが含まれています。クエリの出力では、次のような望ましい結果が生成されます。

id    codes
63592 PELL
58640 SUBL, USBL
73571 PELL, USBL, SUBL

Notes

  • group_concat 集約は、VARCHAR(255) に変換可能な任意のデータ型を処理できます。数値型や時間型など。
  • 集計サイズは、によって 2048 バイトに制限されます。デフォルト (Informix 12.10.FC5 では最大 16380 バイト) であり、大量のデータに対して潜在的な制限が生じます。
  • 集約関数を削除するには、提供されているドロップ コマンドを使用します。

以上がInformix で 1 対多の関係を一意の列に連結するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。