首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >两个工作查询的Jooq组合因FROM子句错误而失败

两个工作查询的Jooq组合因FROM子句错误而失败
EN

Stack Overflow用户
提问于 2016-08-27 02:41:31
回答 1查看 152关注 0票数 1

我有两个单独工作的查询,但当我试图将它们组合在一起时,我得到一个错误消息:" error : missing FROM-clause entry for Table "A“。查询的目的是查看两个表的组合结果,这两个表的JSONB列的格式为"tag1","tag2","tag3“,并带有列名标记。这两个查询单独工作,但当我尝试组合它们时,我得到了错误。我肯定遗漏了什么,但我尝试了几种方法,但都没有效果。你知道如何解决这个问题吗?结果应该是一个不同的标签列表,该列表与查询匹配,并在末尾使用通配符。下面是查询及其组合。我使用的是PostgreSQL 9.5.3

代码语言:javascript
运行
复制
    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();
EN

回答 1

Stack Overflow用户

发布于 2016-08-30 05:57:30

您需要使用Union。试试这个(没有需要测试jooq的工作区,但是这样的东西应该可以工作):

代码语言:javascript
运行
复制
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();
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39172848

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档