Hybris Гибкий поисковый запрос для поиска товаров - PullRequest
0 голосов
/ 13 декабря 2018
   code    Attribute1(String)

    A         C
    B         D
    C         Empty
    D         Empty 

как получить pk всех A, B, C, D

Примечание: используя строковое значение C, D хочу получить pk продукта C, D вместе с A, B, используяГибкий поисковый запрос

Подробно:

У меня есть список продуктов.

Внутри каждого из этих продуктов есть атрибут «X», который содержит код идентификатора продукта типастрока.

Примечание: «Код продукта» означает «Код продукта» другого продукта в списке продуктов.

Теперь я хочу получить pk продуктов на основе кодов продуктов?

1 Ответ

0 голосов
/ 13 декабря 2018

Я не совсем понимаю, но вы можете попробовать что-то вроде этого

select {p1.pk},{p2.pk} from {product as p1},{product as p2} WHERE {p1.Attribute1} = {p2.code}

вы можете добавить фильтр к нему

 AND {p1.Attribute1} in ('C','D')

Использование UNION

SELECT uniontable.PK FROM
(
   {{
      SELECT {p1:PK} AS PK FROM {Product AS p1},{Product AS p2} 
      WHERE {p1.code} = {p2.Attribute1}
   }}
   UNION ALL
   {{
      SELECT {p:PK} AS PK FROM {Product AS p}
      WHERE {p1.Attribute1} is not empty
   }}
) uniontable

С фильтром

SELECT uniontable.PK FROM
(
   {{
      SELECT {p1:PK} AS PK FROM {Product AS p1},{Product AS p2} 
      WHERE {p1.code} = {p2.Attribute1} AND {p2.Attribute1} in ('C','D')
   }}
   UNION ALL
   {{
      SELECT {p:PK} AS PK FROM {Product AS p}
      WHERE {p.Attribute1} in ('C','D')
   }}
) uniontable
...