某些行具有相同的日期。我想把它作为一个。例如:2016-11-02,下午英语1和中午英语11.现在得到两个条目。请帮我把它作为一行。我在这里分享我的模型功能
模型
public function select_data() {
$this->db->distinct();
$this->db->select('extt_std as std');
$this->db->from('exam_time_table');
$query = $this->db->get();
if ($query->num_rows() > 0) {
foreach ($query->result() as $row) {
$row->standard = $row->std;
$data[] = $row;
$this->db->select('*');
$this->db->from('exam_time_table');
$this->db->where('exam_time_table.extt_std', $row->std);
$query = $this->db->get();
$get = $query->result();
foreach ($get as $row) {
if ($row->extt_sess == 'FN') {
$row->fornoon = $row->extt_sub;
$row->afternoon = '';
}
if ($row->extt_sess == 'AN') {
$row->fornoon = '';
$row->afternoon = $row->extt_sub;
}
$data[]=$row;
}
}
return $data;
}
return false;
}
我的桌子
CREATE TABLE `exam_time_table` (
`extt_id` int(10) NOT NULL,
`extt_date` date NOT NULL,
`extt_exam` varchar(20) NOT NULL,
`extt_std` varchar(10) NOT NULL,
`extt_sub` varchar(15) NOT NULL,
`extt_sess` varchar(10) NOT NULL,
`extt_year` varchar(10) NOT NULL
)
INSERT INTO `exam_time_table` (`extt_id`, `extt_date`, `extt_exam`, `extt_std`, `extt_sub`, `extt_sess`, `extt_year`) VALUES
(1, '2016-11-01', 'Half Yearly', 'I-STD', 'Tamil', 'FN', '16-17'),
(2, '2016-11-01', 'Half Yearly', 'II-STD', 'Tamil', 'FN', '16-17'),
(3, '2016-11-01', 'Half Yearly', 'III-STD', 'Tamil', 'FN', '16-17'),
(4, '2016-11-01', 'Half Yearly', 'IV-STD', 'Tamil', 'FN', '16-17'),
(5, '2016-11-01', 'Half Yearly', 'XI-STD', 'Tamil-I', 'FN', '16-17'),
(6, '2016-11-01', 'Half Yearly', 'X-STD', 'Tamil-I', 'FN', '16-17'),
(7, '2016-11-01', 'Half Yearly', 'V-STD', 'Tamil', 'FN', '16-17'),
(8, '2016-11-01', 'Half Yearly', 'VII-STD', 'Tamil', 'FN', '16-17'),
(9, '2016-11-01', 'Half Yearly', 'VII-STD', 'Tamil', 'FN', '16-17'),
(10, '2016-11-01', 'Half Yearly', 'VIII-STD', 'Tamil', 'FN', '16-17'),
(11, '2016-11-01', 'Half Yearly', 'IX-STD', 'Tamil-II', 'AN', '16-17'),
(12, '2016-11-01', 'Half Yearly', 'X-STD', 'Tamil-II', 'AN', '16-17'),
(13, '2016-11-02', 'Half Yearly', 'I-STD', 'English', 'AN', '16-17'),
(14, '2016-11-02', 'Half Yearly', 'II-STD', 'English', 'FN', '16-17'),
(15, '2016-11-02', 'Half Yearly', 'IX-STD', 'English-I', 'FN', '16-17'),
(16, '2016-11-02', 'Half Yearly', 'IX-STD', 'English-II', 'AN', '16-17'),
(17, '2016-11-02', 'Half Yearly', 'X-STD', 'English-I', 'FN', '16-17'),
(18, '2016-11-02', 'Half Yearly', 'X-STD', 'English-II', 'AN', '16-17'),
(19, '2016-11-02', 'Half Yearly', 'III-STD', 'English', 'FN', '16-17');
答案 0 :(得分:1)
这有点复杂,但解决了你的问题。如果其他人可以提供更好的解决方案。我将不胜感激。
public function select_data() {
$this->db->distinct();
$this->db->select('extt_std as std');
$this->db->from('exam_time_table');
$query = $this->db->get();
if ($query->num_rows() > 0) {
foreach ($query->result() as $row) {
$row->standard = $row->std;
$data[] = $row;
$this->db->select('*');
$this->db->from('exam_time_table');
$this->db->where('exam_time_table.extt_std', $row->std);
$this->db->where('exam_time_table.extt_sess', 'AN');
$subquery = $this->db->get_compiled_select();
$this->db->select('*');
$this->db->from('exam_time_table');
$this->db->where('exam_time_table.extt_std', $row->std);
$this->db->where('exam_time_table.extt_sess', 'FN');
$subquery2 = $this->db->get_compiled_select();
$this->db->select('a.*,b.*');
$this->db->from('('.$subquery.') a');
$this->db->join('('.$subquery2.') b','a.extt_std=b.extt_std','');
$get = $this->db->result();
foreach ($get as $row) {
if ($row->extt_sess == 'FN') {
$row->fornoon = $row->extt_sub;
$row->afternoon = '';
}
if ($row->extt_sess == 'AN') {
$row->fornoon = '';
$row->afternoon = $row->extt_sub;
}
$data[]=$row;
}
}
return $data;
}
return false;
}