我在 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/