Как суммировать количество обследованных домов из таблицы CodeIgniter и MySql - PullRequest
0 голосов
/ 18 апреля 2019

Вот мой вопрос SQL ...

У меня есть три таблицы:

course_subcategory

-------------------------------------------------------
| course_subcat_id | course_cat_id| subcoursename| code| 
-------------------------------------------------------

course_category

-------------------------------------------------------
| course_cat_id |  coursename| code| project  |deleted|
-------------------------------------------------------

events

------------------------------------------------------------------------------
|event_id|title| project |course_cat_id |course_subcat_id|no_of_house_surveyed
-----------------------------------------------------------------------------

-

Я хочу показать общее количество обследованных домов и количество событий, произошедших с одинаковыми course_cat_id и course_subcat_id.

Вот мой код.

модели

function getCourseCat(){
        $this->db->select('COUNT(e.title) as no_of_events, SUM(e.no_of_house_surveyed) as total_house_surveyed, c.course_cat_id, c.coursename,s.course_subcat_id,
                  s.subcoursename' )
                  ->from('events e')
                  ->join('course_category c ON e.course_cat_id = c.course_cat_id')
                  ->join('course_subcategory s ON e.course_subcat_id = s.course_subcat_id')
                  ->group_by('e.event_id');
          $result=$this->db->get()->result();
          }

контроллер

$ data ['course_cat'] = $ this-> test_event_summary_model-> getCourseCat ();enter code here

просмотров

foreach($course_cat->result() as $c){

                if ($c->no_of_events == 0) {
                    continue;
                }
echo "<td>".$c->no_of_events."</td>";

                $total_events += $c->no_of_events;
}

Ответы [ 3 ]

0 голосов
/ 18 апреля 2019

Попробуйте это

function getCourseCat() {
    $this->db->select('COUNT(e.title) as no_of_events, SUM(e.no_of_house_surveyed) as total_house_surveyed, c.course_cat_id, c.coursename,s.course_subcat_id, s.subcoursename' )
      ->from('events as e')
      ->join('course_category as c', 'e.course_cat_id = c.course_cat_id')
      ->join('course_subcategory as s', 'e.course_subcat_id = s.course_subcat_id')
      ->group_by('e.event_id');
        $result = $this->db->get();
        return $result;
}
0 голосов
/ 19 апреля 2019

Надеюсь, этот ответ решит вашу проблему -

Модель

function getCourseCat(){
    $where = "e.course_cat_id = c.course_cat_id AND e.course_subcat_id = s.course_subcat_id";
    $this->db->select('c.course_cat_id,c.coursename,s.course_subcat_id,s.subcoursename,COUNT(e.title) as no_of_events,SUM(e.no_of_house_surveyed) as total_house_surveyed');
    $this->db->from('events e');
    $this->db->from('course_category c');
    $this->db->from('course_subcategory s');
    $this->db->where($where);
    $this->db->group_by(array("c.course_cat_id", "c.coursename", "s.course_subcat_id", "s.subcoursename"));
    $query = $this->db->get();
    $res = $query->result_array();
    return $res;
}

Контроллер

public function index(){
    $this->load->model('test_event_summary_model');
    $res['results'] = $this->test_event_summary_model->getCourseCat();
    $this->load->view('cat_view',$res);
} 

Просмотр

foreach ($results as $res) {
    echo "<b>course_cat_id</b> - ".$res['course_cat_id']."<br>";
    echo "<b>coursename</b> - ".$res['coursename']."<br>";
    echo "<b>course_subcat_id</b> - ".$res['course_subcat_id']."<br>";
    echo "<b>subcoursename</b> - ".$res['subcoursename']."<br>";
    echo "<b>no_of_events</b> - ".$res['no_of_events']."<br>";
    echo "<b>total_house_surveyed</b> - ".$res['total_house_surveyed'];
}

Вывод

The output will be something like this-

0 голосов
/ 18 апреля 2019

Пожалуйста, попробуйте это:

function getCourseCat() {
    $this->db->select('COUNT(e.title) as no_of_events, SUM(e.no_of_house_surveyed) as total_house_surveyed, c.course_cat_id, c.coursename,s.course_subcat_id, s.subcoursename' )
      ->from('events as e')
      ->join('course_category as c', 'e.course_cat_id = c.course_cat_id')
      ->join('course_subcategory as s', 'e.course_subcat_id = s.course_subcat_id')
      ->group_by('e.event_id');
    $result = $this->db->get()->result_array();
}

Надеюсь, что это решит вашу проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...