Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MYSQL |在COUNT()中使用子查询时出现语法错误_Mysql_Sql_Select_Count_Group By - Fatal编程技术网

MYSQL |在COUNT()中使用子查询时出现语法错误

MYSQL |在COUNT()中使用子查询时出现语法错误,mysql,sql,select,count,group-by,Mysql,Sql,Select,Count,Group By,我在计数附近出现语法错误,但我试图找出语法错误,但找不到任何错误 SELECT E.`employee_id`, E.`full_name`, LE.`no_of_leaves` AS AllocatedLeaves, MLLT.`leave_type` AS LeaveTypeName, COUNT(SELECT * FROM leave_approval WHERE employee_id = 1) AS TotalLeavesTaken FROM employee E INNER JOI

我在计数附近出现语法错误,但我试图找出语法错误,但找不到任何错误

SELECT 
E.`employee_id`,
E.`full_name`,
LE.`no_of_leaves` AS AllocatedLeaves,
MLLT.`leave_type` AS LeaveTypeName,
COUNT(SELECT * FROM leave_approval WHERE employee_id = 1) AS TotalLeavesTaken
FROM employee E
INNER JOIN leave_entitlement LE
ON E.`employee_id` = LE.`employee_id`
INNER JOIN `ml_leave_type` MLLT
ON MLLT.`ml_leave_type_id` = LE.`ml_leave_type_id`
LEFT JOIN leave_approval LA
ON E.`employee_id` = LA.`employee_id`
LEFT JOIN leave_application LAPP
ON LAPP.`application_id` = LA.`leave_application_id`
LEFT JOIN ml_leave_type MLLTLA
ON MLLTLA.`ml_leave_type_id` = LAPP.`ml_leave_type_id`
这真的是一个语法错误吗。还是我在这里遗漏了什么

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'select * from leave_approval where employee_id = 1) AS TotalLeavesTaken
from emp' at line 6

这一行:

 (SELECT count(*) FROM leave_approval WHERE employee_id = 1) AS TotalLeavesTaken
这是不正确的。如果不将
select*
子查询放在括号中,则无法对其进行计数,但即使这样,您也需要一个
groupby
和附加逻辑。更好的办法是:

COUNT(SELECT * FROM leave_approval WHERE employee_id = 1) AS TotalLeavesTaken

在查询下面的案例检查中,不需要使用子查询进行计数

试试这个:

(Select count(*) from leave_approval where employee_id = 1) AS TotalLeavesTaken
请尝试此查询

选择E.`employee\u id`、E.`full\u name`、LE.`no\u of\u leaves`作为AllocatedLeaves,MLLT.`leave\u type`作为LeaveTypeName,
总计(当LA.employee_id为'1'时,则为1,否则为0结束)为TotaleAveStaken
来自雇员E
内联休假
在E.`employee\u id`=LE.`employee\u id上`
内部联接'ml\u left\u type'MLLT
在MLLT.`ml\u leave\u type\u id`=LE.`ml\u leave\u type\u id`
左加入左左批准
在E.`employee\u id`=LA.`employee\u id上`
左加入左离开应用程序LAPP
在LAPP上,`application\u id`=LA.`leave\u application\u id``
左连接ml\u左类型MLLTLA

在MLLTLA上。`ml\u leave\u type\u id`=LAPP。`ml\u leave\u type\u id`
谢谢您的快速回答。完美答案。。问题已解决:)
(Select count(*) from leave_approval where employee_id = 1) AS TotalLeavesTaken
SELECT E.employee_id, E.full_name, LE.no_of_leaves AS AllocatedLeaves,
       MLLT.leave_type AS LeaveTypeName,
       SUM(CASE WHEN LA.employee_id = 1 THEN 1 ELSE 0 END) AS TotalLeavesTakenByEmplyeeNo1
FROM employee E
INNER JOIN leave_entitlement LE ON E.employee_id = LE.employee_id
INNER JOIN `ml_leave_type` MLLT ON MLLT.ml_leave_type_id = LE.ml_leave_type_id
LEFT JOIN leave_approval LA ON E.employee_id = LA.employee_id
LEFT JOIN leave_application LAPP ON LAPP.application_id = LA.leave_application_id
LEFT JOIN ml_leave_type MLLTLA ON MLLTLA.ml_leave_type_id = LAPP.ml_leave_type_id
GROUP BY E.employee_id;