Mysql 多个选择,带“选择”;“联合所有人”;不起作用

Mysql 多个选择,带“选择”;“联合所有人”;不起作用,mysql,sql,Mysql,Sql,查询不工作: select * from (select department as "Delegación", company as Compañía, config as "Configuración Vehículos", docs as "Documentos Vehículos", count(distinct idClientTruck) as vehículos, su

查询不工作:

select * from
    (select
        department as "Delegación",
         company as Compañía,
         config as "Configuración Vehículos",
         docs as "Documentos Vehículos",
         count(distinct idClientTruck) as vehículos,
         sum(ko) as "Doc. incorrectos Vehículos",
         round(sum(ko)/(docs*count(distinct idClientTruck))*100) as "% Docs. Vehículos"
      from
         (
         select
           cd.name as department,
           cfg_g.name as config, 
           c.businessname as company, 
           (select count(*) from widoc_config where idwidocconfiggroup=cfg_g.idwidocconfiggroup and idstatus=71001 and required=true) as docs, 
           wv.idClientTruck as idEntity, 
           cfg_g.idwidocconfiggroup as idWidocConfigGroup, 
           cfg.idwidocconfig as idWidocConfig, 
           cfg.iddocument as idDocument, 
           a.idstatus as idStatus, 
           if(a.idstatus=43002,"0","1") as ko 
         from
           widoc_config_group cfg_g
             join widoc_config cfg on cfg.idwidocconfiggroup=cfg_g.idwidocconfiggroup and cfg.idstatus=71001 and cfg.required=true
               join widoc_client wc on wc.idclient=cfg_g.idclient and wc.idstatus=71001
             join client c on c.idclient=wc.idclientassociated and c.idstatus_client=5004
             join widoc_vehicle wv on wv.idwidocclient=wc.idwidocclient and wv.idstatus=71001
             join client_truck t on t.idclient_truck=wv.idclienttruck and t.idstatus_truckpart=33005
             join widoc_fulfill_vehicle fv on fv.idwidocconfiggroup=cfg_g.idwidocconfiggroup and fv.idwidocvehicle=wv.idwidocvehicle
             left join attachment_group a on a.idclient=wc.idclientAssociated and a.iddocument=cfg.iddocument and a.idstatus!=43004 and a.idFK=wv.idClientTruck
             left join client_department cd on cd.idClientDepartment=wc.idClientDepartment and cd.idStatus=71001
         where
         cfg_g.idclient = 3683
             #wc.idclientAssociated = 3683
             and cfg_g.identitytype=73004
             and cfg_g.idstatus=71001
              )v 
               ) t UNION ALL
    (select
        config as "Configuración Conductores",
        docs as "Documentos Conductores",
        count(distinct idDriver) as Conductores,
        sum(ko) as "Doc. incorrectos Conductores",
        round(sum(ko)/(docs*count(distinct idDriver))*100) as "% Docs. Conductores"
     from
        (
        select 
           cd.name as department,
           cfg_g.name as config, 
           c.businessname as company, 
           (select count(*) from widoc_config where idwidocconfiggroup=cfg_g.idwidocconfiggroup and idstatus=71001 and required=true) as docs, 
           wd.idDriver as idEntity, 
           cfg_g.idwidocconfiggroup as idWidocConfigGroup, 
           cfg.idwidocconfig as idWidocConfig, 
           cfg.iddocument as idDocument, 
           a.idstatus as idStatus, 
           if(a.idstatus=43002,"0","1") as ko
        from
            widoc_config_group cfg_g
            join widoc_config cfg on cfg.idwidocconfiggroup=cfg_g.idwidocconfiggroup and cfg.idstatus=71001 and cfg.required=true
             join widoc_client wc on wc.idclient=cfg_g.idclient and wc.idstatus=71001
            join client c on c.idclient=wc.idclientassociated and c.idstatus_client=5004
            join widoc_driver wd on wd.idwidocclient=wc.idwidocclient and wd.idstatus=71001
            join driver d on d.iddriver=wd.iddriver and d.idstatus=71001
            join widoc_fulfill_driver fd on fd.idwidocconfiggroup=cfg_g.idwidocconfiggroup and fd.idwidocdriver=wd.idwidocdriver
            left join attachment_group a on a.idclient=wc.idclientAssociated and a.iddocument=cfg.iddocument and a.idstatus!=43004 and a.idFK=wd.idDriver
            left join client_department cd on cd.idClientDepartment=wc.idClientDepartment and cd.idStatus=71001
        where
             cfg_g.idclient = 3683
            #wc.idclientAssociated = 1865
            and cfg_g.identitytype=73003
            and cfg_g.idstatus=71001
            )x) d
            group by department,company,config,idWidocConfigGroup
        ;
错误代码:1064。您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以了解第74行“d,按部门、公司、配置分组,idWidocConfigGroup”附近使用的正确语法

单独查询:

select
    department as Delegación,
    company as Compañía,
    config as Configuración,
    docs as Documentos,
    count(distinct idDriver) as Conductores,
    sum(ko) as "Doc. incorrectos",
    round(sum(ko)/(docs*count(distinct idDriver))*100) as "% incumplimiento"
 from
    (
    select 
       cd.name as department,
       cfg_g.name as config, 
       c.businessname as company, 
       (select count(*) from widoc_config where idwidocconfiggroup=cfg_g.idwidocconfiggroup and idstatus=71001 and required=true) as docs, 
       wd.idDriver, 
       cfg_g.idwidocconfiggroup, 
       cfg.idwidocconfig, 
       cfg.iddocument, 
       a.idstatus, 
       if(a.idstatus=43002,"0","1") as ko
    from
        widoc_config_group cfg_g
        join widoc_config cfg on cfg.idwidocconfiggroup=cfg_g.idwidocconfiggroup and cfg.idstatus=71001 and cfg.required=true
         join widoc_client wc on wc.idclient=cfg_g.idclient and wc.idstatus=71001
        join client c on c.idclient=wc.idclientassociated and c.idstatus_client=5004
        join widoc_driver wd on wd.idwidocclient=wc.idwidocclient and wd.idstatus=71001
        join driver d on d.iddriver=wd.iddriver and d.idstatus=71001
        join widoc_fulfill_driver fd on fd.idwidocconfiggroup=cfg_g.idwidocconfiggroup and fd.idwidocdriver=wd.idwidocdriver
        left join attachment_group a on a.idclient=wc.idclientAssociated and a.iddocument=cfg.iddocument and a.idstatus!=43004 and a.idFK=wd.idDriver
        left join client_department cd on cd.idClientDepartment=wc.idClientDepartment and cd.idStatus=71001
    where
         cfg_g.idclient = 3683
        #wc.idclientAssociated = 1865
        and cfg_g.identitytype=73003
        and cfg_g.idstatus=71001
        ) t
 group by department,company,config,idwidocconfiggroup;
第二个问题:

select
    department as "Delegación",
     company as Compañía,
     config as Configuración,
     docs as Documentos,
     count(distinct idClientTruck) as vehículos,
     sum(ko) as "Doc. incorrectos",
     round(sum(ko)/(docs*count(distinct idClientTruck))*100) as "% incumplimiento"
  from
     (
     select
      cd.name as department,    
        cfg_g.name as config, 
        c.businessname as company, 
        (select count(*) from widoc_config where idwidocconfiggroup=cfg_g.idwidocconfiggroup and idstatus=71001 and required=true) as docs, 
        wv.idClientTruck, 
        cfg_g.idwidocconfiggroup, 
        cfg.idwidocconfig, 
        cfg.iddocument, 
        a.idstatus, 
        if(a.idstatus=43002,"0","1") as ko     
     from
       widoc_config_group cfg_g
         join widoc_config cfg on cfg.idwidocconfiggroup=cfg_g.idwidocconfiggroup and cfg.idstatus=71001 and cfg.required=true
           join widoc_client wc on wc.idclient=cfg_g.idclient and wc.idstatus=71001
         join client c on c.idclient=wc.idclientassociated and c.idstatus_client=5004
         join widoc_vehicle wv on wv.idwidocclient=wc.idwidocclient and wv.idstatus=71001
         join client_truck t on t.idclient_truck=wv.idclienttruck and t.idstatus_truckpart=33005
         join widoc_fulfill_vehicle fv on fv.idwidocconfiggroup=cfg_g.idwidocconfiggroup and fv.idwidocvehicle=wv.idwidocvehicle
         left join attachment_group a on a.idclient=wc.idclientAssociated and a.iddocument=cfg.iddocument and a.idstatus!=43004 and a.idFK=wv.idClientTruck
         left join client_department cd on cd.idClientDepartment=wc.idClientDepartment and cd.idStatus=71001
     where
     cfg_g.idclient = 3683
         #wc.idclientAssociated = 3683
         and cfg_g.identitytype=73004
         and cfg_g.idstatus=71001
         ) t
     group by department,company,config,idwidocconfiggroup;

它们都很好。

我在你的查询中发现了很多问题

  • 对于union和union,两个查询选择中的所有列数都必须相同,但在两个查询中并没有相同的列数 列的第一个选择编号为7

         select
         department as "Delegación",
         company as Compañía,
         config as "Configuración Vehículos",
         docs as "Documentos Vehículos",
         count(distinct idClientTruck) as vehículos,
         sum(ko) as "Doc. incorrectos Vehículos",
         round(sum(ko)/(docs*count(distinct idClientTruck))*100) as "% Docs. Vehículos"
    
  • 其中,列的第二个选择编号为5

        select
        config as "Configuración Conductores",
        docs as "Documentos Conductores",
        count(distinct idDriver) as Conductores,
        sum(ko) as "Doc. incorrectos Conductores",
        round(sum(ko)/(docs*count(distinct idDriver))*100) as "% Docs. Conductores"
    
  • 按部门、公司、配置、idWidocConfigGroup分组
    需要将其放置在正确的位置它应该位于别名x之后

  • 删除不必要的别名,如d和t


  • )x)d...
    更改为
    )x组(按部门、公司、配置、idWidocConfigGroup)
    相同的错误,即使我在“)”之后删除了“d”,则此错误显示为:错误代码:1054。“字段列表”中的未知列“idClientTruck”要聚合什么?在进行聚合的每个语句中,都必须添加一个group by。你能为预期的结果添加一个简短的例子吗?Ramon,你已经写了两次相同的查询了。另外,请检查@Zaynul Abadin Tuhin的答案,他提出了一些很好的建议。这不是同一个查询。如果我删除“d”和“t”,错误代码:1248。每个派生表都必须有自己的别名