Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 如何在jOOQ中在同一个表上写入左外部联接?_Mysql_Sql_Jooq - Fatal编程技术网

Mysql 如何在jOOQ中在同一个表上写入左外部联接?

Mysql 如何在jOOQ中在同一个表上写入左外部联接?,mysql,sql,jooq,Mysql,Sql,Jooq,如何使用jOOQ编写以下SQL SELECT * FROM food_db_schema.tblCategory AS t1 LEFT OUTER JOIN food_db_schema.tblCategory AS t2 ON t1.category_id = t2.parent_id WHERE t2.parent_id IS NULL AND t1.heartbeat = "ALIVE"; 数据库可能是mySQL SELECT * FROM food_db_schema.tblCateg

如何使用jOOQ编写以下SQL

SELECT *
FROM food_db_schema.tblCategory AS t1
LEFT OUTER JOIN food_db_schema.tblCategory AS t2 ON t1.category_id = t2.parent_id
WHERE t2.parent_id IS NULL
AND t1.heartbeat = "ALIVE";
数据库可能是mySQL

SELECT *
FROM food_db_schema.tblCategory AS t1
WHERE t1.category_id IS NULL
AND t1.heartbeat = "ALIVE";
,但您确定
t2.parent\u id
都应该为NULL并等于
t1.category\u id

编辑:

然后像

Table<TblCategoryRecord> t1 = TBLCATEGORY.as("t1");
Table<TblCategoryRecord> t2 = TBLCATEGORY.as("t2");

Field<Integer> t1CategoryId = t1.getField(TblCategory.CATEGORY_ID);
Field<String> t1Heartbeat = t1.getField(TblCategory.HEARTBEAT);
Field<Integer> t2ParentId = t2.getField(TblCategory.PARENT_ID);

Record record = create.select().from(t1)
      .leftOuterJoin(t2).on(t1CategoryId.equal(t2ParentId))
      .where(t2ParentId.isNull())
      .and(t1Heartbeat.equal("ALIVE"));
表t1=tblcategray.as(“t1”);
表t2=TBL类别as(“t2”);
字段t1CategoryId=t1.getField(tblcategray.CATEGORY\u ID);
字段t1Heartbeat=t1.getField(tblcategray.HEARTBEAT);
字段t2ParentId=t2.getField(tblcategray.PARENT\u ID);
Record Record=create.select().from(t1)
.leftOuterJoin(t2).on(t1CategoryId.equal(t2ParentId))
.where(t2ParentId.isNull())
.和(等于(“活着”);
根据所生成的类、属性和元模型对象的调用而定。

很好地描述了如何使用jOOQ 1.x实现这一点。使用别名的自联接与使用别名的常规联接大致相当,如手册中所述:

在即将发布的2.0版中,别名将变得不那么冗长,并且更加类型安全。因此,flesk的解决方案可以简化为:

//类型安全表别名:
TblCategory t1=TblCategory.as(“t1”);
TblCategory t2=TblCategory.as(“t2”);
Record=create.select()
.从(t1)
//t1和t2允许访问别名字段:
.leftOuterJoin(t2).on(t1.类别ID.相等(t2.父ID))
.where(t2.PARENT_ID.isNull())
.和(t1.心跳相等(“活着”);
我还描述了一个更复杂的自连接示例:


选择按钮可根据需要工作。它选择树结构中没有子级的父级。我请求帮助在jOOQ中绘制地图。当然,我可以在原始JDBC中实现它。
create.selectFrom(…)
语法不允许连接。您可以将其重新写入
.select()。从(t1)
,though@Lukas:谢谢。我不在我的开发计算机上,所以我没有测试它。看起来很不错。我习惯于休眠标准,但当您在整个成年生活中都在编写SQL语句时,JOOQ感觉更加直观。