首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将3个查询缩减为单个SQL查询,用于服务器端分页

将3个查询缩减为单个SQL查询,用于服务器端分页
EN

Stack Overflow用户
提问于 2020-02-19 18:43:20
回答 1查看 44关注 0票数 0

本质上,我需要在一个查询中恢复3个查询的结果(对于服务器端的分页排序)。这有点复杂。

这是包含必填字段的图表。

我需要的两列结果被认为是与函数相关的任务(计数)。

第一个查询成功地恢复了我需要的所有行,除了两行。

代码语言:javascript
运行
复制
SELECT DISTINCT vue_cdc_for_opera.libelle as CDC,
                               vue_cdc_for_opera.id_cdc as \"id\",
                               COALESCE(vue_cdc_for_opera.signe_ue, vue_cdc_for_opera.signe_fr) as Signe,
                               vue_cdc_for_opera.classe_ue as \"Classe produit\",
                               vue_cdc_for_opera.code_cdc as \"Code CDC\",
                               dt_bdd_produit.libelle_dt as DT,
                               0 as \"Nombre OCO\",
                               0 as \"Nombre Operateur\"
                FROM vue_cdc_for_opera
                    INNER JOIN cdc_postgresql ON vue_cdc_for_opera.code_cdc = cdc_postgresql.code_cdc
                    INNER JOIN dt_bdd_produit ON vue_cdc_for_opera.id_dt = dt_bdd_produit.id_dt
                    ORDER BY " . $order . " " . $sortOrder . "
                    OFFSET :offset
                    LIMIT :limit

为了获得"Nombre“,我运行以下查询:

代码语言:javascript
运行
复制
  SELECT
            COUNT(o.id) as \"Nombre Opérateurs\"
            FROM habilitation
            INNER JOIN operateur o ON habilitation.id_operateur = o.id and o.actif = true
            WHERE habilitation.id_cdc_postgresql = :idCdc
            AND habilitation.actif = true

为了获得"Nombre“,我运行以下查询:

代码语言:javascript
运行
复制
SELECT id_oc, oc FROM vue_for_lien_oco_cdc WHERE oc != '' AND code_cdc = :codeCdc;

基本上,我需要在单个查询中恢复所有内容,以便能够在服务器端分页中对"Nombre“和"Nombre”进行排序,这超出了我目前的SQL技能。:params在后面的代码中引用绑定的参数。

有人告诉我可以在查询中使用内置的SQL函数,但我不确定从哪里开始。这是可行的吗,你会有任何线索或帮助吗?

EN

回答 1

Stack Overflow用户

发布于 2020-02-19 18:53:04

我不知道如何使用DQL在第一个和第二个查询中进行合并,但对于最新的查询,我们可以有:

代码语言:javascript
运行
复制
$qb->createQueryBuilder('o')
->from(<insert your entity class here>)
->where('o.oc <> ""')
->andWhere('o.code_cdc = :codeCdc')->setParameter('codeCdc',$<insert variable for code_cdc>)
->getQuery()
->getResult();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60298476

复制
相关文章

相似问题

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