検索

ホームページ  >  に質問  >  本文

php - 製品 Infinitus の分類について Mysql テーブルの設計

現在 3 つのテーブルがあります。1: 商品メイン テーブル ID 名 価格

リーリー

以前のテーブル構造は上記の通りです。製品の対応タイプは 1 対多であり、1 つの製品が複数のタイプに対応する可能性があるため、製品のタイプを更新するたびに、既存のテーブル構造を削除する必要があります。関係テーブルの内容を変更し、新しいタイプの関係を挿入します。

商品テーブル:

リーリー

goods_type テーブル

リーリー

そこで、次のように変更したいと思います: Goods_type フィールドをメインの product テーブルに追加して、複数のタイプを区切るにはコンマを使用します。

しかし現在、特定の種類の製品をクエリするときに、Like クエリを使用するとクエリ エラーが発生することがよくあります。 そこで、このような場合の対処法についてお聞きしたいのですが

黄舟黄舟2839日前711

全員に返信(6)返信します

  • 大家讲道理

    大家讲道理2017-05-16 12:04:51

    like の使用は良い選択ではありません。元の投稿者のニーズを解決できる Mysql 関数 find_in_set をお勧めします。公式ドキュメント: https://dev.mysql.com/doc/ref...

    返事
    0
  • PHP中文网

    PHP中文网2017-05-16 12:04:51

    再帰的な実装にストアド プロシージャの使用を検討することもできますが、サーバーとデータベースへの負荷が増大することは言うまでもなく、無限分類自体が優れたユーザー エクスペリエンス設計ではありません。

    返事
    0
  • 曾经蜡笔没有小新

    曾经蜡笔没有小新2017-05-16 12:04:51

    最初に like を使用してデータの一部を見つけ、次に in_array() をループしてフィルターするか、テーブル構造を変更します

    返事
    0
  • 伊谢尔伦

    伊谢尔伦2017-05-16 12:04:51

    あなたの関係は明らかに多対多の関係です。
    ですので、テーブルは3つ確保しておいた方が良いと思います。
    これはよりパラダイムに沿ったものです。

    返事
    0
  • 淡淡烟草味

    淡淡烟草味2017-05-16 12:04:51

    本来の考え方にこだわるなら、各カテゴリIDの前後に区切り文字を追加し、likeと一致させる場合は区切り文字を追加する方が合理的です

    返事
    0
  • PHPz

    PHPz2017-05-16 12:04:51

    likeを使う場合、例えば1,2,11という値があった場合、like 1は1と11をlikeします
    この場合はfind_in_setを使ってください

    like を使用する場合は、フィールド値を 1,2,11 のようにすることもできます。1 のようにすることも目的を達成できます。

    返事
    0
  • キャンセル返事