任何人都知道是否可以在如下查询这样的关联中使用子查询?
SELECT l, o
FROM User u
INNER JOIN u.licenses l
LEFT JOIN l.orders o
WITH o.id = (
SELECT MAX(lastOrder.id)
FROM Order lastOrder
WHERE lastOrder.license = l
)
WHERE u.idtPerson = :idtPerson
AND l.statusCode != 3
我找到了这个解决方法......
SELECT l, o
FROM User u
INNER JOIN u.licenses l
LEFT JOIN l.orders o
WHERE u.idtPerson = :idtPerson
AND l.statusCode != 3
AND (
o.id IS NULL
OR o.id = (
SELECT MAX(lastOrder.id)
FROM Order lastOrder
WHERE lastOrder.license = l
)
)
但我真的认为这不是一个好的解决方案,有什么建议吗?