realcjames 发表于 2023-1-20 19:21:37

大大,求问数据中心-查询,可否进行联表查询?

本帖最后由 realcjames 于 2023-1-20 19:27 编辑

三张表,项目表project,项目工时表projectTime,项目报销表projectPayment;
后两张表通过projectId与项目表关联。
需求是:联表查询出项目的总计工时和总计报销。

但是我写sql,比如
select sum(t.time), t.projectId from project p left join projectTime t group by p.projectId
在left这里就报错了

如果不用join,比如
select sum(t.time), t.projectId from project p, projectTime t where p.projectId = t.projectId group by p.projectId
倒是不会报错,也能查出来,但如果projectTime表里没有对应的工时数据,就查不出结果,因为似乎做不到像join那样的功能?

所以,我想请教下,我的这个需求怎么解决:
1. 是我join的写法不对?
2. 还是JPQL不支持join?
3. 或是我的第二种写法,可以做到类似join的功能,即使工时表中没数据,也能以项目表为准,查出所有项目?
4. 或者有没有其他的方法?
感谢!

Ray 发表于 2023-1-28 11:10:49

默认情况下由于jpa需要先知道类的存在才能做映射,并不是jpa不支持join,而是我们在设计之初为了实现分库分表的设计给每个类都单独建立了一个上下文根,导致了无法join,实际上在单数据库情况下是可以使用join的,仅在分库分表情况下无法join,我们正在改进这部分设计,计划将区分jpql和原生sql的执行,这样如果需要join,可以使用原生sql,预计在下一个发布版本中完成这个改动.

realcjames 发表于 2023-1-29 09:41:09

Ray 发表于 2023-1-28 11:10
默认情况下由于jpa需要先知道类的存在才能做映射,并不是jpa不支持join,而是我们在设计之初为了实现分库分表 ...

好的好的,感谢回复,那我先分成两个查询来做吧

论坛管理员 发表于 2023-1-29 09:49:03

:handshake
页: [1]
查看完整版本: 大大,求问数据中心-查询,可否进行联表查询?