У меня 2 таблицы:
orders: id
items: id, orderId, total, flag
Я хотел бы сделать следующий запрос, используя критерии гибернации (DetachedCriteria):
SELECT
o.id,
SUM(i1.total),
SUM(i2.total)
FROM
orders o
LEFT JOIN
(
SELECT
i.orderId as orderId,
SUM(i.total) as total
FROM
items i
WHERE
i.flag = 0
GROUP BY
orderId
) AS i1
ON i1.orderId = o.id
LEFT JOIN
(
SELECT
i.orderId as orderId,
SUM(i.total) as total
FROM
items i
WHERE
i.flag = 1
GROUP BY
orderId
) AS i2
ON i2.orderId = o.id
GROUP BY
o.id
Я знаю, как использовать DetachedCriteri
a для создания подзапроса в предложении WHERE
, но, как видите, мне нужно выполнить подзапрос в предложении FROM
. Если это невозможно, возможно, есть способ записать это в предложении SELECT
(внутри SUM()
), потому что этот запрос можно переписать в такую форму.
Мне действительно нужно использовать Criteria API, даже если мне нужно передать в запрос собственный SQL.
Я не показывал вам классы или отображение, но, как видите, это очень простой пример.