ホームページ >データベース >mysql チュートリアル >SQL を使用してカンマ区切り値を使用して 2 つのテーブルを結合するにはどうすればよいですか?
問題ステートメント
データベースの正規化によりデータ管理が大幅に強化されますが、場合によっては構造的な制限により実装が妨げられます。この質問では、正規化がオプションではない場合に、1 つのテーブルのカンマ区切り値を 2 番目のテーブルの値に関連付ける方法を検討します。
解決策
提供されたシナリオでは、Notes テーブルの「forDepts」列の値を、Positions テーブルの対応する名前と結合することを目的としています。予期される出力は、ノート ID (「nid」) のリストと、関連付けられた部門名がカンマで区切られて連結されたものです。
これを実現するには、FIND_IN_SET() 関数と GROUP_CONCAT() 関数を利用できます。 SQL クエリは次のとおりです。
SELECT a.nid, GROUP_CONCAT(b.name ORDER BY b.id) DepartmentName FROM Notes a INNER JOIN Positions b ON FIND_IN_SET(b.id, a.forDepts) > 0 GROUP BY a.nid
説明
補足
提供された PHP コードは、'forDepts' 列の最初の値のみを出力するようです。これは、クエリで使用されている LEFT JOIN が原因である可能性があります。すべての値を取得するには、代わりに INNER JOIN の使用を検討してください。
このアプローチは、データがカンマ区切り形式で保存されており、データベースを再構築せずに他の値と関連付ける必要がある状況に適用できます。
以上がSQL を使用してカンマ区切り値を使用して 2 つのテーブルを結合するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。