ホームページ >データベース >mysql チュートリアル >データベース内のカンマ区切り列からユーザー名を効率的に取得するにはどうすればよいですか?
カンマ区切り列からのユーザー名の抽出
複数のテーブル tblA (ユーザー)、tblB (ユーザー名)、および tblC (カンマ区切りのユーザー ID を使用した命名法)。目標は、特定の命名規則の値を検索するときにすべてのユーザー名を取得することです。
既存のアプローチと制限
提供されたクエリは、クロス結合と部分文字列関数の使用を試みます。カンマ区切り値から最初の userID を抽出します。ただし、このアプローチは非効率的であり、命名法に複数のユーザー ID が関連付けられている場合には正確な結果が得られません。
正規化されたスキーマと改善されたクエリ
を行うことをお勧めします。ジャンクション テーブルを導入してデータベース スキーマを正規化します。 tblC_user テーブルには、c_id (tblC を参照) と userID (tblB を参照) の 2 つの列が含まれている必要があります。これにより、tblC でカンマ区切りのユーザー ID が必要なくなります。
次のクエリは、正規化されたスキーマを使用してユーザー名を抽出する方法を示しています。
SELECT * FROM tblC c JOIN tblC_user cu ON (c.id = cu.c_id) JOIN tblB b ON (b.userid = cu.userid) WHERE c.nname = "new1";
このクエリは、関連付けられたすべてのユーザー名を効率的に取得します。 「new1」命名法を使用します。
の利点正規化
データベース スキーマを正規化すると、次のような利点があります。
以上がデータベース内のカンマ区切り列からユーザー名を効率的に取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。