php - 使用 codeigniter 在 sql 中仅选择匹配值

标签 php jquery mysql codeigniter

我在 mysql 中还有 6 个表,每个字段都有一个唯一字段“works_id”,我在这些表中输入数据。我只想匹配它显示的值,但它需要 16 行。假设在 worker 姓名字段中它显示两个名字重复 8 次,但我只想要两个名字一次。它可能需要两行。但这怎么可能。我的表显示:

Ser Works ID Date Of Works  Infrastructure  Name of System  Type of Works       Vendor Name     Worker Name     
1   1016    2017-03-12      Server          JoinBDApps      Trobleshooting      Vintage IT      Md Rajaon
2   1016    2017-03-12      Server          JoinBDApps      Software Upgrade    Vintage IT      Md Rajaon
3   1016    2017-03-12      Network         JoinBDApps      Trobleshooting      Vintage IT      Md Rajaon
4   1016    2017-03-12      Network         JoinBDApps      Software Upgrade    Vintage IT      Md Rajaon
5   1016    2017-03-12      Server          CMH             Trobleshooting      Vintage IT      Md Rajaon
6   1016    2017-03-12      Server          CMH             Software Upgrade    Vintage IT      Md Rajaon
7   1016    2017-03-12      Network         CMH             Trobleshooting      Vintage IT      Md Rajaon
8   1016    2017-03-12      Network         CMH             Software Upgrade    Vintage IT      Md Rajaon
9   1016    2017-03-12      Server          JoinBDApps      Trobleshooting      GP IT           Md Forkan
10  1016    2017-03-12      Server          JoinBDApps      Software Upgrade    GP IT           Md Forkan
11  1016    2017-03-12      Network         JoinBDApps      Trobleshooting      GP IT           Md Forkan
12  1016    2017-03-12      Network         JoinBDApps      Software Upgrade    GP IT           Md Forkan
13  1016    2017-03-12      Server          CMH             Trobleshooting      GP IT           Md Forkan
14  1016    2017-03-12      Server          CMH             Software Upgrade    GP IT           Md Forkan
15  1016    2017-03-12      Network         CMH             Trobleshooting      GP IT           Md Forkan
16  1016    2017-03-12      Network         CMH             Software Upgrade    GP IT           Md Forkan

但是我想要:

Ser Works ID Date Of Works  Infrastructure  Name of System  Type of Works   Vendor Name     Worker Name     
1   1016    2017-03-12      Server          JoinBDApps      Trobleshooting  Vintage IT      Md Rajaon
                            Network         CMH             Software Upgrade GP IT          Md Forkan

我的 Codeigniter 模型是:

$this->db->select('trxn_tbl.works_id, trxn_tbl.works_date, infrashtructure_txn_info.infrashtructure_name, apps_txn_tbl.apps_name, works_type_txn_tbl.works_type, workers_tbl.vendor_id, workers_tbl.name');
        $this->db->from('infrashtructure_txn_info');
        $this->db->join('workers_tbl', 'trxn_tbl.works_id = workers_tbl.works_id');
        $this->db->join('works_type_txn_tbl', 'trxn_tbl.works_id = works_type_txn_tbl.works_id');
        $this->db->join('infrashtructure_txn_info', 'trxn_tbl.works_id = infrashtructure_txn_info.works_id');
        $this->db->join('apps_txn_tbl', 'trxn_tbl.works_id = apps_txn_tbl.works_id');
        $query = $this->db->get();

        return $query->result();

请任何人帮助我...

最佳答案

您应该使用 GROUP BY 来聚合行:

$this->db->group_by(array('trxn_tbl.works_id', 'infrashtructure_txn_info.infrashtructure_name')); 

试试这个是否有效:

$this->db->select('trxn_tbl.works_id, trxn_tbl.works_date, infrashtructure_txn_info.infrashtructure_name, apps_txn_tbl.apps_name, works_type_txn_tbl.works_type, workers_tbl.vendor_id, workers_tbl.name');
$this->db->from('infrashtructure_txn_info');
$this->db->join('workers_tbl', 'trxn_tbl.works_id = workers_tbl.works_id');
$this->db->join('works_type_txn_tbl', 'trxn_tbl.works_id = works_type_txn_tbl.works_id');
$this->db->join('infrashtructure_txn_info', 'trxn_tbl.works_id = infrashtructure_txn_info.works_id');
$this->db->join('apps_txn_tbl', 'trxn_tbl.works_id = apps_txn_tbl.works_id');

$this->db->group_by(array('trxn_tbl.works_id', 'infrashtructure_txn_info.infrashtructure_name'));

$query = $this->db->get();

return $query->result();

编辑:如果您遇到任何与 group_by 相关的错误,请尝试按您选择的所有命名列进行分组。另一种方法是尝试对 group_by 子句中未包含的所有列使用 GROUP_CONCAT。例如:GROUP_CONCAT(workers_tbl.name SEPARATOR ",") as workers_tbl.name

关于php - 使用 codeigniter 在 sql 中仅选择匹配值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42747480/

相关文章:

javascript - 如何取消 AJAX 中的复选框?

javascript - Jquery 弹出窗口不再工作

mysql - Oracle 相当于 MySQL 代码 "insert into dummy"返回错误消息

c# - 在数据集中寻找字段 C#

javascript - KnockoutJS + Symfony2 + Twig 集合表单添加和删除项目

javascript - 使用 Angularjs 或 Jquery 重构 Json

php - 如何在 Laravel 中做一个简单的重定向?

mysql - 使用 select 更新查询——它如何知道要更新哪一行

php - sql查询显示2个日期之间的所有行

php - 如何在发生时从 php 获取实时输出?