2014-12-09 45 views
0

ok。它很奇怪,我使用group_by并加入mysql从加入记录中获取总行数

这是我的查询。

SELECT * 
FROM (`emp_skills` ES) 
INNER JOIN `employee` E ON `E`.`employee_id`= `ES`.`employee_id` 
INNER JOIN `ml_skill_type` MLST ON `MLST`.`skill_type_id` = `ES`.`ml_skill_type_id` 
INNER JOIN `employment` ET ON `ET`.`employee_id` = `E`.`employee_id` 
INNER JOIN `position_management` PM ON `PM`.`employement_id`=`ET`.`employment_id` AND PM.current=1 
INNER JOIN `ml_designations` MLD ON `MLD`.`ml_designation_id`=`PM`.`ml_designation_id` 
LEFT JOIN `assign_job` AJ ON `AJ`.`employee_id` = `E`.`employee_id` 
LEFT JOIN `ml_projects` MLP ON `MLP`.`project_id` = `AJ`.`project_id` 
GROUP BY `E`.`employee_id` 

这里有结果我越来越远。 enter image description here

但如果我使用这个。

SELECT COUNT(*) AS numrows 

然后我的查询变得

​​

,这是奇怪的结果我得到,这是我应该得到只有1列和行我想给我看总行。 但这里是我得到的。 enter image description here

如何解决此查询?


对不起,如果我无法解释我的问题..

这是注释掉GROUP_CONCAT查询和GROUP_BY

SELECT 
`E`.`employee_id`, 
`E`.`full_name`, 
`MLD`.`designation_name`#, 
#GROUP_CONCAT(DISTINCT MLP.project_title) AS Projects, 
#GROUP_CONCAT(DISTINCT MLST.skill_name) AS EmployeeSkills 
FROM (`emp_skills` ES) 
INNER JOIN `employee` E ON `E`.`employee_id`= `ES`.`employee_id` 
INNER JOIN `ml_skill_type` MLST ON `MLST`.`skill_type_id` = `ES`.`ml_skill_type_id` 
INNER JOIN `employment` ET ON `ET`.`employee_id` = `E`.`employee_id` 
INNER JOIN `position_management` PM ON `PM`.`employement_id`=`ET`.`employment_id` AND PM.current=1 
INNER JOIN `ml_designations` MLD ON `MLD`.`ml_designation_id`=`PM`.`ml_designation_id` 
LEFT JOIN `assign_job` AJ ON `AJ`.`employee_id` = `E`.`employee_id` 
LEFT JOIN `ml_projects` MLP ON `MLP`.`project_id` = `AJ`.`project_id` 
#GROUP BY `E`.`employee_id` 
LIMIT 25 

,这里是它的结果。 enter image description here 上面的图片中有16条记录可以显示正常。但如果使用group_concat和group_by我得到6条记录。

enter image description here

它其实我是想,我不想重复的雇员姓名,而不是我想逗号分隔值等

但怎么知道知道多少行查询从MySQL返回。

回答

1

如果你想知道总数,你需要在最后删除GROUP BY E.employee_id。现在你可以得到不同的employee_id的总计数,而不是总数。

+0

但显示我16条记录,而我得到6组记录?所以我想得到我得到的行数,因为它将用于分页.. – 2014-12-09 11:51:19

+0

16个recors与没有COUNT(*),而COUNT(*)会给你一行内容'16',对不对? – 2014-12-09 11:55:33

+0

是的。是的,但我不想要16个记录?我的意思是我不想重复这就是为什么我使用group_by和group_concat? 那么如何解决这个问题呢? – 2014-12-09 12:00:00