Имам оценки, които представляват оценка на продукт.
Тези оценки имат стойност (цяло число между 1 и 5), product_id и rating_type_id.
Оценките имат връзка много към едно с rating_types. rating_types имат отношение много към едно към rating_categories. Значение: one rating_category
има several rating_types
, а one rating_types
има several ratings
.
Освен това всеки продукт има връзка много към много с rating_categories. Това означава, че даден продукт може да бъде оценен само от рейтинги, чийто rating_type принадлежи към тези rating_categories.
За даден product_id бих искал да извлека за всяка rating_category името на категорията, броя на всички оценки и средната стойност на всички оценки. Тези оценки имат product_id като външен ключ и трябва да имат rating_type като externalkey, чийто rating_type има rating_category като externalKey.
Това е моето запитване досега, но е грешно:
SELECT rc.name, rc.rating_category_id,
(SELECT COUNT(*) as count, AVG(value) as average
FROM rating
WHERE rating_id IN (
SELECT r.rating_id
FROM rc // I want to reference the same rating_category rc as above
LEFT JOIN rating_type rt
ON rating_category_id
LEFT JOIN rating r
ON rating_type_id
)
)
FROM rating_category_4_product rc4p
LEFT JOIN rating_category rc
ON rating_category_id
WHERE rc4p.product_id = {$productId}