Гибкий поисковый запрос UNION

Я хотел бы добавить ОБЪЕДИНЕНИЕ к этому запросу. Где именно я должен поместить любой ОБЪЕДИНЕНИЕ (не имеет значения код ОБЪЕДИНЕНИЯ, я просто хочу знать, куда я могу его поместить) в следующий гибкий поисковый запрос (я не знаком с синтаксисом)

   SELECT DISTINCT {o:pk} FROM 
( 
    {{ 
        SELECT 
            MAX({h.startTime}) AS startTime 
        FROM {CronJobHistory AS h JOIN CronJobResult AS r ON {h.result} = {r.pk} } 
        WHERE {h.cronJobCode} = 'ordersCronJob' AND {r.code} = 'SUCCESS' 
    }} 
) LAST, 
( 
    {{ 
        SELECT 
            MAX({h.startTime}) AS startTime 
        FROM {CronJobHistory as h} 
        WHERE {h.cronJobCode} = 'ordersCronJob' 
    }} 
) CURRENT, {Order       AS o 
       JOIN PaymentMode AS pm ON {pm.pk} = {o:paymentMode} 
       JOIN BaseStore AS b ON {o.store} = {b.PK} 
       JOIN OrderProcess AS op ON {o.pk} = {op.order}
    } 
WHERE (({pm:code} != 'asm'  AND  {op:creationtime} > LAST.startTime        AND {op:creationtime} <= CURRENT.startTime) 
    OR ({pm:code} =  'asm'  AND  {o:asmActivationTime} > LAST.startTime   AND {o:asmActivationTime} <= CURRENT.startTime) )  
    AND {o:originalVersion} IS NULL 
    AND 'rows-eu,rows-es' LIKE CONCAT( '%', CONCAT( {b.uid} , '%' ) ) 
AND {op.processDefinitionName} LIKE 'order-process%'

Я пытался поместить его в последнюю строку, но он не компилируется.

Любой намек?


person Nexussim Lements    schedule 24.10.2019    source источник


Ответы (1)


Для запросов UNION или запросов INNER вам потребуется заключить соответствующие запросы в двойные фигурные скобки.

{{..query1..}} UNION {{..query2..}}

Ниже приведен пример гибкого объединения запросов.

SELECT uniontable.PK, uniontable.CODE FROM
(
   {{
      SELECT {c:PK} as PK, {c:code} AS CODE FROM {Chapter AS c}
      WHERE {c:PUBLICATION} LIKE ?pk
   }}
   UNION ALL
   {{
      SELECT {p:PK} as PK, {p:code} AS CODE FROM {Page AS p}
      WHERE {p:PUBLICATION} LIKE ?pk
   }}
) uniontable

Вы можете найти Советы и рекомендации по гибкому поиску по адресу https://help.sap.com/viewer/d0224eca81e249cb821f2cdf45a82ace/1905/en-US/8bc36ba986691014b48be171221d1f4f.html

Надеюсь, поможет!

Исправлена ​​первая половина вашего запроса...

  SELECT tbl.startTime FROM 
( 
    {{ 
        SELECT 
            MAX({h.startTime}) AS startTime 
        FROM {CronJobHistory AS h JOIN CronJobResult AS r ON {h.result} = {r.pk} } 
        WHERE {h.cronJobCode} = 'ordersCronJob' AND {r.code} = 'SUCCESS' 
    }} 
 UNION 

    {{ 
        SELECT 
            MAX({h.startTime}) AS startTime 
        FROM {CronJobHistory as h} 
        WHERE {h.cronJobCode} = 'ordersCronJob' 
    }} 
) tbl
person www.hybriscx.com    schedule 24.10.2019
comment
Спасибо за информацию. Что было бы, если бы я хотел обернуть свой предыдущий запрос в объединение с самим собой? Я пробовал, но он не компилируется? - person Nexussim Lements; 24.10.2019
comment
Я не уверен, действительно ли вашему запросу нужен UNION. Я вижу, что вы пытаетесь создать ДВА столбца, то есть ПОСЛЕДНИЙ и ТЕКУЩИЙ. Можете ли вы объяснить вариант использования, который вы пытаетесь создать? - person www.hybriscx.com; 24.10.2019
comment
Я дважды прочитал ваш ответ и решил проблему. Спасибо, HybrixCX! - person Nexussim Lements; 24.10.2019
comment
Рад, что вы решили это. Тем временем я обновил ответ, применив исправление к первой половине вашего запроса. :) - person www.hybriscx.com; 24.10.2019