我的数据库中有两个表如下:
CUSTOMER (
ID integer Generated Always As Identity,
FIRSTNAME varchar(32) not null,
LASTNAME varchar(32) not null,
PHONENUMBER varchar(11) not null,
ADDRESS varchar(225),
primary key (id)
);
和
APP.ORDERS (
ID integer not null default AUTOINCREMENT: start 1 increment 1,
CUSTOMER_ID integer References Customer(ID) ,
EMPLOYEEID integer References Employee(ID),
DATEOFDELIVERY date,
primary key (id),
);
当我尝试加入这两个表时,如下所示,一切都很好:
SELECT CUSTOMER_ID,firstname,LASTNAME,Address,phoneNumber From APP.Customer
INNER JOIN APP.Orders ON customer.ID = customer_ID
WHERE ORDERS.dateOfDelivery Between '2012-09-01' AND '2012-11-11'
但是当我使用如下聚合函数时,它给了我错误:
SELECT Count(CUSTOMER_ID),firstname,LASTNAME,Address,phoneNumber
From APP.Customer
INNER JOIN APP.Orders ON customer.ID = customer_ID
WHERE ORDERS.dateOfDelivery Between '2012-09-01' AND '2012-11-11' ;
错误:
[2012-07-20 08:07:04] [42Y35][30000] Column reference 'FIRSTNAME' is invalid. When the SELECT list contains at least one aggregate then all entries must be valid aggregate expressions.
我尝试将上面的最后一个代码更改为 Orders.Count(CUSTOMR_ID) 以告诉数据库正确的表,但它给我的错误是没有名称为 Orders 的模式,所以我将其更改为 APP.Orders.Count(CUSTOMER_ID) 但它永远解决不了问题。错误 :Schema 'ORDERS' does not exist
更新问题:
我想出那个非常简单的查询:
SELECT COUNT(*),ID FROM Orders
将导致此错误:
[2012-07-20 09:01:50] [42Y35][30000] Column reference 'ID' is invalid. When the SELECT list contains at least one aggregate then all entries must be valid aggregate expressions.
所以这意味着不可能同时拥有聚合函数和简单的列名,但我想知道如何用任何等效的查询提供预期的输出?任何的想法?