私は何時間もこのクエリでレンガの壁に頭をぶつけていて、ここで運がいいと思っていました。
カテゴリとカテゴリ評価に基づいて製品を返すクエリに取り組んでいます。
単純化されたスキーマは次のようになります。
商品
ID
名
価格
カテゴリ
ID
名
products_categories
product_id
category_id
評価 ( 0 - 5 )
私が現在持っているクエリは次のとおりです。
SELECT
`products` . *, products_categories.*
FROM
`products`
JOIN
`products_categories` ON (`products`.`id` = `products_categories`.`product_id`)
WHERE
`products_categories`.`category_id` IN ('5' , '24', '41')
AND `products_categories`.`rating` > 1
AND `products`.`enabled` = 1
HAVING count(distinct (products_categories.category_id)) = 3
ORDER BY `amount` ASC
LIMIT 9 OFFSET 0
クエリの最初の部分は、正常に機能する 3 つのカテゴリに属するすべての製品を選択することですが、私が苦労している部分は評価部分です。
カテゴリの評価が 1 以上の場合、これら 3 つのカテゴリに属するすべての製品を選択するクエリが必要です。現状では、クエリは、偽の結果を返す最後のカテゴリの評価に対してのみ動作します。
正しい方向への単なるポイントであっても、どんな入力でも大歓迎です。
乾杯。