我有两个单独工作的查询,但当我试图将它们组合在一起时,我得到一个错误消息:" error : missing FROM-clause entry for Table "A“。查询的目的是查看两个表的组合结果,这两个表的JSONB列的格式为"tag1","tag2","tag3“,并带有列名标记。这两个查询单独工作,但当我尝试组合它们时,我得到了错误。我肯定遗漏了什么,但我尝试了几种方法,但都没有效果。你知道如何解决这个问题吗?结果应该是一个不同的标签列表,该列表与查询匹配,并在末尾使用通配符。下面是查询及其组合。我使用的是PostgreSQL 9.5.3
final Field<String> value = field(name("A", "value"), String.class);
final Table<Record1<String>> c1 = sql.dsl()
.selectDistinct(value)
.from(CAMPAIGN,lateral(table("jsonb_array_elements_text({0})", CAMPAIGN.TAGS)).as("A"))
.where(CAMPAIGN.STORE_KEY.equal(campaign.getStoreKey()))
.and(CAMPAIGN.CAMPAIGN_KEY.notEqual(campaignKey))
.and(value.like(search + "%%"))
.asTable("c1");
final Table<Record1<String>> c2 = sql.dsl()
.selectDistinct(value)
.from(STOREFRONT, lateral(table("jsonb_array_elements_text({0})", STOREFRONT.TAGS)).as("A"))
.where(STOREFRONT.STORE_KEY.equal(campaign.getStoreKey()))
.and(value.like(search + "%%"))
.asTable("c2");
final Result<Record1<String>> result = sql.dsl()
.selectDistinct(value)
.from(c1, c2)
.limit(30)
.fetch();发布于 2016-08-30 05:57:30
您需要使用Union。试试这个(没有需要测试jooq的工作区,但是这样的东西应该可以工作):
final Field<String> value = field(name("A", "value"), String.class);
final Select<Record1<String>> c1 = sql.dsl()
.selectDistinct(value)
.from(CAMPAIGN,lateral(table("jsonb_array_elements_text({0})", CAMPAIGN.TAGS)).as("A"))
.where(CAMPAIGN.STORE_KEY.equal(campaign.getStoreKey()))
.and(CAMPAIGN.CAMPAIGN_KEY.notEqual(campaignKey))
.and(value.like(search + "%%"));
final Select<Record1<String>> c2 = sql.dsl()
.selectDistinct(value)
.from(STOREFRONT, lateral(table("jsonb_array_elements_text({0})", STOREFRONT.TAGS)).as("A"))
.where(STOREFRONT.STORE_KEY.equal(campaign.getStoreKey()))
.and(value.like(search + "%%"));
final Result<Record1<String>> result = sql.dsl()
.selectFrom(c1.asTable())
.union(c2)
.limit(30)
.fetch();https://stackoverflow.com/questions/39172848
复制相似问题