diff --git a/src/main/java/neatlogic/framework/cmdb/utils/ResourceViewGenerateSqlUtil.java b/src/main/java/neatlogic/framework/cmdb/utils/ResourceViewGenerateSqlUtil.java index a9440e7ca7a1523916d7be003b1880a6d8e61e40..c9bf8f2085dac4e31be3911535fd3b04929e58ea 100644 --- a/src/main/java/neatlogic/framework/cmdb/utils/ResourceViewGenerateSqlUtil.java +++ b/src/main/java/neatlogic/framework/cmdb/utils/ResourceViewGenerateSqlUtil.java @@ -104,10 +104,19 @@ public class ResourceViewGenerateSqlUtil { private PlainSelect initPlainSelectByMainResourceId(CiVo mainCiVo) { joinedTableMap = new HashMap<>(); equalColumnMap = new HashMap<>(); + String tableName = "cmdb_" + mainCiVo.getId(); + String tableAlias = tableName + "_" + mainCiVo.getName(); + Table cmdbCiIdTable = new Table(TenantContext.get().getDataDbName(), tableName).withAlias(new Alias(tableAlias).withUseAs(false)); + PlainSelect plainSelect = new PlainSelect() + .withFromItem(cmdbCiIdTable); + addJoinTable(cmdbCiIdTable); + String mainTableAlias = mainCiVo.getName(); Table mainTable = new Table("cmdb_cientity").withAlias(new Alias("cientity_" + mainTableAlias).withUseAs(false)); - PlainSelect plainSelect = new PlainSelect() - .withFromItem(mainTable); + Column cmdbCiIdTableCientityIdColumn = new Column(cmdbCiIdTable, "cientity_id"); + Column mainTableIdColumn = new Column(mainTable, "id"); + Join joinMainTable = new Join().withRightItem(mainTable).addOnExpression(new EqualsTo(cmdbCiIdTableCientityIdColumn, mainTableIdColumn)); + plainSelect.addJoins(joinMainTable); addJoinTable(mainTable); Table a = new Table("cmdb_ci").withAlias(new Alias("a").withUseAs(false));