我有个小问题..。我在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但是当我尝试转换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它看上去就像如果教义不能理解这个查询。这是一个错误:
语义错误行0,近于“(选择标识(ma.usuario_id)”:Error: Class‘(“未定义”)。
有人能帮我理解如何使用Querys的加入原则吗?我需要它和KNPPaginationBundle一起使用。而且它不适用于原始SQL。
发布于 2017-02-11 08:56:11
不要使用Identity函数。既然你是从Matriz选的,你就不需要了。但是,我还是会删除内部选择并使用如下所示:
SELECT u,
CASE WHEN IDENTITY(m.usuario) = u.id
THEN 1
ELSE 0
END AS posicionado
FROM AppBundle:Usuario u
LEFT JOIN AppBundle:Matriz ma ON ma.matriz = 1 AND m.usario_id = u.id
group by u.id另外,如果您向您的实体展示,我可以改进连接。
https://stackoverflow.com/questions/42171417
复制相似问题