具有计数错误的多表查询

 只想活得快乐的魔羯 发布于 2023-01-19 18:32

每当我向下面的select语句添加一个计数时,它会导致它给我一个错误,我不知道为什么:

select "WorkOrder"."WorkOrderID", "Vehicles"."Model", "Vehicles"."Color",
"Vehicles"."LicensePlate", COUNT("WorkOrderPart"."WorkPartID") AS "Parts"
FROM "WorkOrder", "Vehicles", "WorkOrderPart"
WHERE "WorkOrder"."VIN" = "Vehicles"."VIN" AND
"WorkOrder"."WorkOrderID" = "WorkOrderPart"."WorkOrderID";

每当我运行它时,我会收到以下错误:

select "WorkOrder"."WorkOrderID", "Vehicles"."Model", "Vehicles"."Color",
       *
ERROR at line 1:
ORA-00937: not a single-group group function

我该怎么办?我正在使用Oracle数据库运行SQL命令行.

1 个回答
  • 如果您有count(或其他聚合函数),则需要group by非聚合项

    select 
         "WorkOrder"."WorkOrderID", 
         "Vehicles"."Model", 
         "Vehicles"."Color",
         "Vehicles"."LicensePlate", 
         COUNT("WorkOrderPart"."WorkPartID") AS "Parts"
    FROM "WorkOrder", "Vehicles", "WorkOrderPart"
    WHERE "WorkOrder"."VIN" = "Vehicles"."VIN" 
    AND "WorkOrder"."WorkOrderID" = "WorkOrderPart"."WorkOrderID"
    group by  "WorkOrder"."WorkOrderID", "Vehicles"."Model", "Vehicles"."Color",
    "Vehicles"."LicensePlate"
    

    顺便说一句,使用显式连接(除非你使用的是史前版本的oracle)代替where条款被认为是一种好习惯.

    FROM "WorkOrder" 
         inner join "Vehicles" on "WorkOrder"."VIN" = "Vehicles"."VIN" 
         left join "WorkOrderPart" on "WorkOrder"."WorkOrderID" = "WorkOrderPart"."WorkOrderID"
    

    2023-01-19 18:36 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有