当前位置: 首页 > 知识库问答 >
问题:

使用来自两个不同数据库的两个表用JOOQ构建左联接查询

澹台志诚
2023-03-14

现在我们需要用JOOQ创建left join查询,什么将left join来自两个不同数据库的两个表

示例本机SQL查询(贝娄),我们需要这个查询是建立使用JOOQ框架,而不是使用本机SQL。直到现在我还没有找到任何解决方案,也许JOOQ不支持这个功能

SELECT * 
FROM `library`.`books` 
LEFT JOIN `library2`.`author2` ON `library`.`books`.`author_id` = `library2`.`author2`.`id`

共有1个答案

杜鸿彩
2023-03-14

如果要使用两个不同的数据库/模式,则需要相应地配置代码生成器。您可以指定如下所述的几个输入模式:

<configuration>
  <generator>
    <database>
      <schemata>
        <schema>
          <inputSchema>library</inputSchema>
        </schema>
        <schema>
          <inputSchema>library2</inputSchema>
        </schema>
      </schemata>
    </database>
  </generator>
</configuration>

备选方案:

  • 您可以省略 配置,jooq的代码生成器只需生成所有可用的模式。
  • 您可以配置几个独立的代码生成,每个模式一个。这意味着您的模式没有相互共享的链接元数据(例如外键)。
import static com.example.generated.library .Library .LIBRARY ;
import static com.example.generated.library2.Library2.LIBRARY2;
//                                  ^^^^^^^^ ^^^^^^^^ ^^^^^^^^
//                                     |        |        |
// Package per schema -----------------+        |        |
// Schema class       --------------------------+        |
// Schema instance    -----------------------------------+
DSL.using(configuration)
   .select()
   .from(LIBRARY.BOOKS)
   .leftJoin(LIBRARY2.AUTHOR2)
   .on(LIBRARY.BOOKS.AUTHOR_ID.eq(LIBRARY2.AUTHOR2.ID))
   .fetch();
 类似资料:
  • 我有两个表:p. test和q。在两个不同的数据库上测试-p和q。 这两个表都有不同的MYSQL连接,并且位于两个不同的服务器上。 我需要做一个自然连接,如下所示:http://www.microshell.com/database/sql/comparing-data-from-2-database-tables/2/ 我怎么可能做到呢?我还使用java PreparedStatement来实际

  • 问题内容: 在MySQL中,我有两个不同的数据库-我们姑且称之为 一个 和 乙 。 是否可以在数据库 A 中的表与数据库 B中 的表之间执行 联接 ? 问题答案: 是的,假设该帐户具有适当的权限,则可以使用: 您只需要在表引用前面加上它所驻留的数据库的名称即可。

  • 问题内容: 该表包含一个ID列,valueHeading列和一个value列。我想将value列分为两个新列,分别称为valueHeading1和valueHeading2,具体取决于值具有哪种valueHeading类型。 所以我想加入这个选择: 编辑:完全加入 使用此选择: 在各自的ID上。我该怎么做呢? 编辑 以说明我要执行的操作: 原始表格: 新表: 问题答案: 在SQLServer200

  • 我正在开发一个基于SAAS的站点,我必须将两个DBs中的两个表连接起来,比如说DB1中的table1和DB2中的table2。我必须使用cakephp中的join从表1和表2获取匹配记录,但它会抛出如下错误: 错误:SQLSTATE[42000]:语法错误或访问冲突:1142 SELECT命令拒绝用户'dbname'@'localhost'访问表'table_name'。 有谁能解释一下如何使用c

  • 我有下面的查询,我正试图将其转换为Laravel的查询生成器,以便利用自动转义等功能。 实际上,查询所说的是“获取所有主题的名称,如果它们有匹配的report_comment(通过中间的表),将其与主题一起返回”(对于给定的条件,主题有一个或零report_comments)...如果我直接在MySQL中运行查询并返回我期望的结果,查询就可以工作。目前是硬编码的,但最终将成为占位符,以便可以传入任

  • 问题内容: 我正在使用两个MySQL数据库。我想将DB1中的表与SQLAlchemy中DB2中的表连接起来。 我在sqlalchemy中创建数据访问层时正在使用automap_base,如下所示… 我的表类就像 我正在这样加入 我收到这样的错误: 我们在数据库db1中创建了表t1,在数据库db2中创建了表t2。 是否可以在sqlalchemy ORM中的两个数据库表之间进行联接?如何实现呢? 问题