0

次のテーブル構造があります。

カテゴリー:

 1. id
 2. parent_id
 3. category

属性:

 1. id
 2. attribute

カテゴリ_属性

 1. category_id
 2. attribute_id

属性_値

 1. id
 2. attribute_id
 3. value

製品

 1. id
 2. category_id
 3. product
 4. price

製品_属性_値

 1. product_id
 2. attribute_id
 3. value_id

とりあえず、カテゴリを開いたときに「ビーズ」(id = 1) としましょう。このカテゴリのすべての属性とその属性のすべての値を選択します。

問題は、「直径」属性 (id = 1) に 10 個の値があることです: 4mm、6mm、8mm、12mm、14mm、16mm、18mm、20mm、24mm、30mm (id 1-10) で、それらはすべてフィルターに表示されます。私も20mm径の商品はありません。

カテゴリ製品とその属性と値に基づいて属性と値を選択するにはどうすればよいですか? たとえば、カテゴリ ビーズに直径 12mm と 14mm の製品しかない場合、他の値はフィルターで省略されます。

ばかげているかもしれませんが、そのようなデータベーススキーマを使用した最初のプロジェクトであり、この問題を除いてすべて管理しました。

フォーマットして申し訳ありませんが、私の電話から書いています。前もって感謝します。

4

1 に答える 1

0

JOIN を実行して、カテゴリに結合可能な製品があることを確認してから、GROUP BY category.id を実行して、カテゴリを 1 回だけ取得することができます。

SELECT *
FROM   categories
JOIN   products ON products.category_id = categories.id 
GROUP BY categories.id, products.attribute
于 2013-01-23T23:13:57.303 に答える