IgnitedTables |对Group Concat进行过滤会产生错误

时间:2014-12-08 06:25:57

标签: mysql codeigniter datatables

我在Codeigniter中使用Ignited Tables for Datatables, 我面临的问题是被点燃的表没有对Group Concat的适当支持,因为我使用Group Concat,我得到了MySQL错误。

Error Number: 1111

Invalid use of group function

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` WHERE (E.full_name LIKE '%s%' OR MLD.designation_name LIKE '%s%' OR GROUP_CONCAT(DISTINCT MLP.project_title) LIKE '%s%' OR GROUP_CONCAT(DISTINCT MLST.skill_name) LIKE '%s%' ) GROUP BY `E`.`employee_id` LIMIT 25

Filename: C:\xampp\htdocs\projects\HR\system\database\DB_driver.php

Line Number: 330

我使用版本0.7的点燃表,但仍然在2.0版我没有看到任何支持组concat,我会更新到2.0版但我得到错误,当我尝试从版本0.7更新到2.0点燃表。

我使用的DataTables库:     https://github.com/pakistanihaider/HouseRentSystem/blob/master/application/libraries/Datatables.php

我可以在我的库中修复群组Concat的任何修复以修复数据表中的过滤吗?


github上有一个解决方案,因为之前已经提出过这个问题。但它不是永久的解决方案,就像使用此解决方案一样,过滤器仅适用于group_concats(如果存在于表中),并且其他简单表格未被过滤。

但如果没有小组连续,那就没关系..

现在,如何在group_concat列和简单列上同时使用过滤器。?


刚刚发现如果使用Group_Concat,则总结果和分页存在问题.. :( 我必须使用数据表,因为整个项目是使用数据表构建的。

enter image description here

任何一个熟悉点火表库的人? https://github.com/IgnitedDatatables/Ignited-Datatables/issues/76

1 个答案:

答案 0 :(得分:0)

通过不将包含GROUP_CONCAT的列包含在可搜索的内容来推翻它。



$(document).ready(function() {
  $('#your-table').dataTable({
    "columnDefs": [{
      "bSearchable": false,
      "render": function(data, type, row) {
        //if you had any rendering
        return data;
      },
      "targets": 3 //column with the group concat
    }]
  });
});