php - 製品 Infinitus の分類について Mysql テーブルの設計
黄舟
黄舟 2017-05-16 12:02:51
0
6
691

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

リーリー

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

商品テーブル:

リーリー

goods_type テーブル

リーリー

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

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

黄舟
黄舟

人生最曼妙的风景,竟是内心的淡定与从容!

全員に返信(6)
大家讲道理

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

いいねを押す +0
洪涛

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

いいねを押す +0
曾经蜡笔没有小新

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

いいねを押す +0
伊谢尔伦

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

いいねを押す +0
淡淡烟草味

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

いいねを押す +0
PHPzhong

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

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

いいねを押す +0
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート