我正在尝试创建一个简单的虚拟数据库,但在尝试查询时遇到了问题:
SELECT
k.id_customer,
k.name_customer,
k.lastname_customer,
r.date_bill,
sum(p.price_product*us.quantity) AS TOTAL_PRICE
FROM
product p,
bill r,
item us,
customer k
WHERE
k.id_customer=1
AND k.id_customer=r.customer_ID_customer
AND us.bill_ID_bill=r.ID_bill
AND p.ID_product=us.product_ID_product
GROUP BY k.id_customer
ORACLE声明了以下错误:
ORA-00979:不是GROUP BY表达式
我尝试仅使用总和进行相同的查询并且有效,但我想在帐单上添加客户名称和日期。
答案 0 :(得分:1)
所有非聚合函数的表达式必须是GROUP BY
的一部分。试试:
SELECT
k.id_customer,
k.name_customer,
k.lastname_customer,
r.date_bill,
sum(p.price_product*us.quantity) AS TOTAL_PRICE
FROM
product p,
bill r,
item us,
customer k
WHERE
k.id_customer=1
AND k.id_customer=r.customer_ID_customer
AND us.bill_ID_bill=r.ID_bill
AND p.ID_product=us.product_ID_product
GROUP BY k.id_customer,
k.name_customer,
k.lastname_customer,
r.date_bill
另外,考虑不要为JOINS使用旧的语法,更有可能无意中引入 CROSS JOIN 。它会是这样的:
...
FROM table1
INNER JOIN table2
ON (table1.column1 = table2.column2)
答案 1 :(得分:0)
根据我的理解,您需要包含SELECT子句中不是组函数的所有表达式,因此以下内容应该有效。
Uncaught TypeError: oTable.fnReloadAjax is not a function