現在 3 つのテーブルがあります。1: 商品メイン テーブル ID 名 価格
リーリー以前のテーブル構造は上記の通りです。製品の対応タイプは 1 対多であり、1 つの製品が複数のタイプに対応する可能性があるため、製品のタイプを更新するたびに、既存のテーブル構造を削除する必要があります。関係テーブルの内容を変更し、新しいタイプの関係を挿入します。
商品テーブル:
リーリーgoods_type テーブル
リーリーそこで、次のように変更したいと思います: Goods_type フィールドをメインの product テーブルに追加して、複数のタイプを区切るにはコンマを使用します。
しかし現在、特定の種類の製品をクエリするときに、Like クエリを使用するとクエリ エラーが発生することがよくあります。 そこで、このような場合の対処法についてお聞きしたいのですが
like の使用は良い選択ではありません。元の投稿者のニーズを解決できる Mysql 関数 find_in_set をお勧めします。公式ドキュメント: https://dev.mysql.com/doc/ref...
再帰的な実装にストアド プロシージャの使用を検討することもできますが、サーバーとデータベースへの負荷が増大することは言うまでもなく、無限分類自体が優れたユーザー エクスペリエンス設計ではありません。
最初に like を使用してデータの一部を見つけ、次に in_array() をループしてフィルターするか、テーブル構造を変更します
あなたの関係は明らかに多対多の関係です。
ですので、テーブルは3つ確保しておいた方が良いと思います。
これはよりパラダイムに沿ったものです。
本来の考え方にこだわるなら、各カテゴリIDの前後に区切り文字を追加し、likeと一致させる場合は区切り文字を追加する方が合理的です
likeを使う場合、例えば1,2,11という値があった場合、like 1は1と11をlikeします
この場合はfind_in_setを使ってください
like を使用する場合は、フィールド値を 1,2,11 のようにすることもできます。1 のようにすることも目的を達成できます。