データベースから製品を選択するためのタグシステムを実行しようとしています。私はこれを達成するための最善の方法は、多くのレコードがある場合、LIKE '%tag%'を使用することが遅くなるため、多対多の関係を使用することです。また、this質問を複数のタグに一致させるには、リクエストされている各タグの結合を行う必要があります。複数のタグを含む行を選択すると良い方法がありますか?
私は3つのテーブル:shop_products、shop_categories、shop_products_categoriesを持っています。たとえば、タグ「花」と「ロマンス」の両方を持つ商品を見つけることができるようにする必要があります。
SELECT p.sku, p.name, p.path FROM shop_products p
LEFT JOIN shop_products_categories pc1 ON p.sku = pc1.product_sku
LEFT JOIN shop_categories c1 ON pc1.category_id = c1.id
LEFT JOIN shop_products_categories pc2 ON p.sku = pc2.product_sku
LEFT JOIN shop_categories c2 ON pc2.category_id = c2.id
WHERE c1.path = 'flowers' AND c2.path = 'romance'
これは関連するPHPをコーディングする前に動作確認しているデモクエリです。動作します。しかしこれは本当にこれを行う最善の方法ですか?私は検索する各タグの結合を行うよりも、これを行うより良い方法がないと信じるのは難しいと思う。 アドバイスありがとうございます。 :)
おかげで、。 :) – Fourjays