ホームページ >データベース >mysql チュートリアル >カンマ区切りの結合フィールドを使用してテーブルを結合するにはどうすればよいですか?

カンマ区切りの結合フィールドを使用してテーブルを結合するにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-11-10 22:23:02284ブラウズ

How to Join Tables with Comma-Separated Join Fields?

カンマ区切りの結合フィールドを使用したテーブルの結合

データベース管理では、多くの場合、複数のフィールドを含むフィールドに基づいてテーブルを結合する必要があります。カンマ区切りの値。これにより、結合フィールドを除外し、代わりに関連テーブルから一致する値を選択するクエリを実行するときに問題が発生します。

このシナリオには、カテゴリと映画という 2 つのテーブルがあり、映画テーブルのカテゴリ列には次の内容が含まれています。カテゴリ ID のカンマ区切りのリスト。私たちの目標は、各映画のカテゴリを配列形式で取得するクエリを実行することです。

解決策

これを達成する 1 つの方法は、次の JOIN 操作を使用することです。 find_in_set() 関数を利用するサブクエリ。 find_in_set() 関数は、指定された値がカンマ区切りの文字列内に存在するかどうかをチェックします。

次のクエリは、カンマ区切りのカテゴリ ID に基づいて映画とカテゴリのテーブルを結合する方法を示しています。

select
    m.id,
    group_concat(c.name)
from
    movies m
    join categories c on find_in_set(c.id, m.categories)
group by
    m.id

説明

  • find_in_set() 関数は、映画とカテゴリ テーブルの間で共通のカテゴリを見つけるために JOIN 句で使用されます。
  • group_concat() 関数は、選択したカテゴリ名を映画ごとに 1 つの文字列に連結するために使用されます。
  • group by 句は、結果をムービー ID でグループ化し、各ムービーに独自の配列が含まれるようにします。

出力

クエリの出力は、id (映画 ID) とカテゴリ (カテゴリ名の配列) の 2 つの列を持つテーブルです。 )。たとえば、出力は次のようになります:

id categories
1 Comedy,Drama
2 Action,Drama
4 Other,Dance

以上がカンマ区切りの結合フィールドを使用してテーブルを結合するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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