Mysql 从另一个表中减去一列的总和';s柱

Mysql 从另一个表中减去一列的总和';s柱,mysql,asp.net,vb.net,Mysql,Asp.net,Vb.net,我所尝试的: SELECT requestformtbl.employee_name, requestformtbl.request_type, requestformtbl.total_day, requestformtbl.request_status, requestformtbl.admin_remark, requestformtbl.confirmed_by, requestformtbl.date_confirmed, requesttbl.max_

我所尝试的:

SELECT requestformtbl.employee_name, requestformtbl.request_type, requestformtbl.total_day,
                requestformtbl.request_status, requestformtbl.admin_remark, requestformtbl.confirmed_by, requestformtbl.date_confirmed, requesttbl.max_allotment,
                (requesttbl.max_allotment - sum(requestformtbl.total_day)) as Available from requestformtbl inner join requesttbl on 
                requestformtbl.request_type = requesttbl.request_type;
错误:“requestformtbl.employee_name”列在选择列表中无效,因为它未包含在聚合函数或GROUP BY子句中

如果requestttbl.request\u type=“休假”的requesttbl.max\u allocation=20, 在requestformtbl中插入新条目时,requestformtbl.request\u type=“休假”和requestformtbl.total\u day=5
我想获得剩余的可用假期

您可以通过使用相关子查询获取员工使用天数的总和,而无需使用
分组方式
,即可获得所需的结果:

SELECT rft.employee_name, 
       rft.request_type, 
       rft.total_day,
       rft.request_status, 
       rft.admin_remark, 
       rft.confirmed_by, 
       rft.date_confirmed, 
       rt.max_allotment,
       rt.max_allotment - (select sum(total_day) 
                           from requestformtbl rft2 
                           where rft2.employee_name = rft.employee_name) as Available
from requestformtbl rft
inner join requesttbl rt on rft.request_type = rt.request_type;

注意,我使用了表别名来提高查询的可读性。

您不能将诸如
sum()
之类的聚合函数与select中的“normal”列混合使用。您需要相应地对数据进行分组。为了帮助您,您必须添加示例数据和预期输出,最好是简单的。更新您的问题添加适当的数据示例,并将预期结果作为表格文本。对不起,我刚刚更新了我的问题,谢谢!不,恐怕你没有。看见