java - QueryDsl SQL - 左连接子查询

标签 java mysql spring-data querydsl

我正在使用QueryDsl SQL并且我想要左连接子查询。这是纯 SQL

中的查询
SELECT
  usr.memberId,
  payoutsBbf.totalPyts
FROM
  users usr
  LEFT JOIN
    (SELECT
       pyt.member_id   AS mmb_id,
       SUM(pyt.amount) AS totalPyts
  FROM
    payout pyt
  WHERE
    pyt.payoutPeriod < '2018-01-01'
    GROUP BY pyt.member_id) AS payoutsBbf ON usr.id = payoutsBbf.mmb_id

我希望用QueryDsl SQL编写它,并且子查询与主表users保持连接几乎很重要,因为这只是整个复杂的一个片段查询。

  1. 如何处理 LEFT JOIN x ON 部分

  2. 如何处理 SELECT payoutBbf.totalPyts 部分中的子查询别名

最佳答案

这就是我要做的:

final StringPath payoutsBbf = stringPath("payoutsBbf");
final String mmbId = "mmb_id";
final String totalPyts = "totalPyts";
sqlQueryFactory.select(users.memberId, stringPath(payoutsBbf, totalPyts))
    .from(users).leftJoin(
        sqlQueryFactory.select(payout.member_id.as(mmbId), member_id.amount.sum().as(totalPyts))
            .from(payout).where(payout.payoutPeriod.lt("2018-01-01")).groupBy(payout.member_id),
        payoutsBbf
    ).on(users.id.eq(stringPath(payoutsBbf, mmbId))).fetch();

关于java - QueryDsl SQL - 左连接子查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55580301/

相关文章:

php - 尝试创建 PHP 搜索脚本

java - 是否可以更改 Spring Data 可分页响应的 JSON 名称?

Java 通用二叉搜索树无法比较 T 类型

java - 具有相对路径的 JSF 导航规则

java - 类加载器问题 Tomcat 6 javagent

android - 我如何解决 java.lang.String 无法转换为 JSON 对象?

java - 如何在没有完整源代码的情况下获取邮件内容?

mysql - 重置root密码后,建立数据库连接出错

spring - 使用Spring查询ElasticSearch

java - 在 Spring Data JPA 中的单个事务中保存、删除和更新