Пытаюсь выбрать запись из таблицы базы данных, используя mysql PARTITION
и несколько INNER JOIN
, чтобы вернуть 3 записи, в зависимости от типа продукта.
Проблема, с которой я сейчас сталкиваюсь, заключается в том, что пользователь, который выбирает запись, имеет более 5 типов продуктов в разделе «Бакалея, еда и напитки», но мой запрос вернет 3 напитка, 2 бакалеи и 1 еду, даже еслия изменяю предел раздела, он все еще не возвращается, как ожидалось.
Вот мой запрос
SELECT sl.business_name, sl.business_country, sl.seller_private_key, p.product_name, p.product_id, p.product_price, p.product_type, p.product_added_date, p.product_seller_key
FROM (
SELECT p.product_name, p.product_id, p.product_price, p.product_type, p.product_added_date, p.product_seller_key,
ROW_NUMBER() OVER(PARTITION BY p.product_type ORDER BY p.product_type) AS limit_group
FROM seller_stores_products p
WHERE p.product_availability IN(1,2)
) p
INNER JOIN seller_account sl
ON p.product_seller_key = sl.seller_private_key
INNER JOIN seller_stores st
ON st.store_seller_key = sl.seller_private_key
WHERE limit_group <= 5
AND sl.seller_private_key = "t9HfbiEDzIXyHjvx57uI"
GROUP BY p.product_id
ORDER BY sl.seller_private_key ASC, p.product_added_date DESC
LIMIT 25
Также здесь есть скрипка
Ожидаемый результат - выбрать максимум 3 записи, только если их больше трехкаждый тип продукта.