我有
。{/ 1}card_type
表,其中有card_id
auto_increment
密钥和cardtpe
为primary key
。另一张桌子 我有activities
表。活动表中的columns
是activity_id
auto_increment
密钥和activity
列primary key
。第三个表是actual_alldetails
表。该actual_alldetails
中的列为id
,其中auto_increment
为{} 带有(emp_code,activity_id,card_id)
的{{1}}列。该 第四个表是composite key
表,这些表中的列是employee
emp_code
和primary key
。
当我尝试执行我的一个查询时: -
emp_name
它显示我的错误:
GROUP GROUP(MIN(),MAX(),COUNT(),...)的混合没有GROUP 如果没有GROUP BY子句,则列是非法的。
我不明白为什么它会向我显示这些错误。是因为我正在使用一个主键和一个复合键进行内连接? 如果我的预测是正确的,那么做这些的正确查询是什么? 请帮我解决这个问题。
答案 0 :(得分:1)
错误消息说明了:
如果没有GROUP BY子句,混合GROUP列(MIN(),MAX(),COUNT(),...)没有GROUP列是非法的。
你有一个select语句,其中包含聚合值SUM(TIME_TO_SEC(a.out_time)
和非聚合值TIME_TO_SEC(a.in_time)
我不知道您希望的结果到底是什么,但是您必须将聚合函数应用于第二个值,或者您已经添加了一个组,因为错误消息说明它知道该怎么做小组。
例如,将查询更改为:
SELECT i.*,
d.Date,
a.in_time,
a.out_time,
SEC_TO_TIME(SUM(TIME_TO_SEC(a.out_time))-(TIME_TO_SEC(a.in_time))) AS duration,
c.cardtype,
a.wo,
v.activity,
a.quty,
a.wastage,
a.mcusage,
a.actual_wastage
FROM employee_details i
INNER JOIN actual_alldetails a ON i.emp_code=a.emp_code
INNER JOIN attendance_date d ON d.date_id=a.date_id
INNER JOIN card_type c ON c.card_id=a.card_id
INNER JOIN activities v ON v.activity_id=a.activity_id
WHERE d.Date='2016-01-30'
GROUP BY i.emp_code
ORDER BY v.activity;
我猜测员工的身份价值:i.emp_code
答案 1 :(得分:0)
仔细观察这一行:
SEC_TO_TIME(SUM(TIME_TO_SEC(a.out_time))-(TIME_TO_SEC(a.in_time))) AS duration,
此处有一个SUM()
函数,看起来非常奇数,很可能会触发您的错误消息。尝试删除SUM
。