我要构建的表存在一些问题。该表使用mysql数据库,并通过多对多表链接了多个表。
我使用JSON代码在jQuery Table中插入值。
这是用于查询数据库中值的模型:
function list_all()
{
$login_id = $this->session->userdata('User_id');
$this->db->select('p.project_id, p.Project, p.Description, p.Status, p.Thumbnail, p.StartDate, p.EndDate, t.template_id, t.Template')
->select('GROUP_CONCAT(DISTINCT v.Name SEPARATOR ",") as PeopleList, GROUP_CONCAT(DISTINCT w.asset_id SEPARATOR ",") as AssetsList', FALSE)
->from('projects p')
->join('assigned_projects_ppeople a', 'a.project_id = p.project_id')
->join('assigned_assets_pproject w', 'w.project_id = p.project_id', 'left')
->join('project_templates t', 't.template_id = p.template_id')
->join('people v', 'v.people_id = a.people_id')
->where('a.people_id', $login_id)
->group_by('p.project_id');
$query = $this->db->get();
$rows = $query->result_array();
//Return result to jTable
$jTableResult = array();
$jTableResult['Result'] = "OK";
$jTableResult['Records'] = $rows;
$result = json_encode($jTableResult);
return $result;
}
所有值都在jQuery表中列出,但GROUP_CONCAT值除外,该值通过“资产”列中列出的资产数量与“人员姓名”重复...编辑:使用GROUP_CONCAT中的DISTINCT关键字解决了问题。
但是,如果没有链接到项目的条目资产,则不会加载该项目,也不会在表中显示该项目。编辑:在“ assigned_assets_pproject”表上使用左联接来解决。
这是带有JSON代码http://i.stack.imgur.com/jEj4D.png的表格的屏幕截图。有关信息,每个项目中只有一个用户“ Michael Bonfill”。
这是last_query()的输出
SELECT `p`.`project_id`, `p`.`Project`, `p`.`Description`, `p`.`Status`, `p`.`Thumbnail`, `p`.`StartDate`, `p`.`EndDate`, `t`.`template_id`, `t`.`Template`, GROUP_CONCAT(v.Name SEPARATOR ", ") as PeopleList, GROUP_CONCAT(w.asset_id SEPARATOR ", ") as AssetsList
FROM (`projects` p)
JOIN `assigned_projects_ppeople` a ON `a`.`project_id` = `p`.`project_id`
JOIN `assigned_assets_pproject` w ON `w`.`project_id` = `p`.`project_id`
JOIN `project_templates` t ON `t`.`template_id` = `p`.`template_id`
JOIN `people` v ON `v`.`people_id` = `a`.`people_id`
WHERE `a`.`people_id` = '1'
GROUP BY `p`.`project_id`
如果需要,我可以导出数据库的SQL以获取更多信息。谢谢 !
像这样使用DISTINCT关键字GROUP_CONCAT(DISTINCT v.Name SEPARATOR ",")
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句