我遇到了一个小问题......我创建了一个完全正常的SQL查询。
我需要一个关于查询结果的列,它告诉我这行是否存在于另一行中,以及是否按user_id分组。
这是我的询问:
select u.*,
case when m.usuario_id = u.id
then 1
else 0
end as posicionado
from usuario u
left join ( select usuario_id from matriz where matriz = 1 ) as m
on u.id = m.usuario_id group by u.id
但是当我尝试转换do DQL时,它会在left join ( select
上出现问题。
这是我的实际DQL:
SELECT u,
CASE WHEN IDENTITY(m.usuario) = u.id
THEN 1
ELSE 0
END AS posicionado
FROM AppBundle:Usuario u
LEFT JOIN (SELECT IDENTITY (ma.usuario_id) FROM AppBundle:Matriz ma WHERE ma.matriz = 1) as m ON u.id = m.usuario_id group by u.id
就像Doctrine无法理解该查询一样。这是错误:
[语义错误]第0行,第206列附近'(SELECT IDENTITY(ma.usuario_id)':错误:类'('未定义。
有人可以帮助我了解如何在使用Doctrine加入Querys吗? 我需要它与KNPPaginationBundle一起使用。它不适用于原始SQL。
答案 0 :(得分:0)
尽量不要使用filter
功能。因为您从Matriz中选择,所以您不需要它。但我仍然会删除内部选择并使用如下:
Identity
此外,如果您要显示您的实体,我可以改善加入。