首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用左联接查询将原始SQL转换为DQL

如何使用左联接查询将原始SQL转换为DQL
EN

Stack Overflow用户
提问于 2017-02-11 02:09:37
回答 1查看 289关注 0票数 0

我有个小问题..。我在SQL上创建了一个运行良好的查询。

我需要一个查询结果列,它告诉我这一行是否存在于另一行中,并按user_id分组。

这是我现在的疑问:

代码语言:javascript
运行
复制
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:

代码语言:javascript
运行
复制
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。

EN

Stack Overflow用户

回答已采纳

发布于 2017-02-11 08:56:11

不要使用Identity函数。既然你是从Matriz选的,你就不需要了。但是,我还是会删除内部选择并使用如下所示:

代码语言:javascript
运行
复制
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

另外,如果您向您的实体展示,我可以改进连接。

票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42171417

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档