#mysql #hybris #flexible-search
#mysql #sap-commerce-cloud #гибкий поиск
Вопрос:
Я подготовил гибкий поисковый запрос. Здесь я разработал условие, подобное:
-
Статус заказа завершен в заказах
-
И записи заказа, которые присутствуют в заказе
-
Получение продуктов, которые находятся в orderentries
Для этого я написал запрос
select {p.pk} from {
order as o
join OrderStatus as os on {os.pk}={o.status}
join orderentry as oe on{oe.order}={o.pk}
join product as p on {oe.product}={p.pk}
}
where {os.code}='COMPLETED'
AND {o.date}>'2020-08-16 00:00:00.000' AND{o.date}<'2020-09-30 00:00:00.000'
group by{p.pk} order by count({oe.pk}) desc limit 10
здесь, в этом запросе, я хочу получить всю информацию о продукте, например
select * from Product}
Как изменить этот запрос, чтобы получить все продукты?
Ответ №1:
Вы можете сделать это с помощью подвыбора. Первым запросом, который вы опубликовали выше, будет подвыборка. Вам просто нужно добавить еще один выбор, чтобы получить информацию о продукте для всех PK, возвращенных в подвыборке.
select * from {Product as prod} where {prod.pk} in
({{
select
top 10 {p.pk}
from
{
Order as o join
OrderStatus as os on {os.pk} = {o.status} join
OrderEntry as oe on {oe.order} = {o.pk} join
Product as p on {oe.product} = {p.pk}
}
where
{os.code} = 'COMPLETED' and
{o.date} > '2020-08-16 00:00:00.000' and
{o.date} < '2020-09-30 00:00:00.000'
group by {p.pk}
order by count({oe.pk}) desc
}})
Комментарии:
1. это было здорово, спасибо. но я также добавляю ограничение, которое я беру из другой таблицы, могу ли я включить его, как это звучит. выберите {numberOfProducts} из {topsellingproductcomponent}. он возвращает число (например, 10). так что я могу ограничить значения, которые приходят
2. Смотрите Мой отредактированный запрос выше. Просто потребовалась небольшая модификация. Должно получиться
3. Кроме того, я не думаю, что есть какой-либо способ сделать то, что вы просите, со значением {topsellingproductcomponent} в операторе select . Сценарий groovy, вероятно, был бы лучшим способом достижения этой цели.