PHP / MYSQL按列分组,有2个连接表

时间:2017-11-20 01:27:34

标签: php mysql

我有一个名为“class”的表,其字段为“section”,section字段在“section”表和“course”表中加入。现在我想显示所有不同的“部分”并将其与“课程”分组:

Course 1  
    -Section 1  
    -section 2  

Course 2  
    -section 3  
    -section 4  

这是我的查询代码

return $this->_db->select("
                    SELECT DISTINCT
                        class.section,
                        section.id,
                        section.code,
                        section.name AS sectionname,
                        section.`year`,
                        section.minenrollee,
                        course.code,
                        course.name AS coursename
                    FROM
                        class
                        Inner Join section ON class.section = section.id
                        Inner Join course ON section.course = course.id
                    WHERE
                        class.period =  '".$period."'
                    GROUP BY
                        section.course
                    ORDER BY
                        section.`year` ASC,
                        section.code ASC
                    ");
这是我的PHP代码。谁能帮我。提前谢谢

//GET DISTINCT SECTION IN CLASS
        $sections = $this->model->getDistinctsections(Session::get('period'));
        $list = array();
        foreach ($sections as $r) {
            $list[$r->coursename][$r->id]['coursename'] = $r->coursename;
        }
        print_r($list);

1 个答案:

答案 0 :(得分:1)

您的数据应该按原样正确返回。话虽如此,像print_r()这样的语句永远不会将数据分组到一个漂亮的“分组”列表中。那不是它的工作;你必须自己做。

要获得所需的结果,您需要遍历数据。如果要分组的列与上一行中的列相同,则无需再次将其写入表中。由于这不是编码服务,我会给你一个示例数据集,你可以在那里工作。

示例数据:

Company | Department | Employee
-------------------------------
A       | Accounting | John
A       | Accounting | Bill
A       | Billing    | Jane
A       | Billing    | Debra

要将此数据打印到表格中,并在CompanyDepartment上进行分组,我们需要遍历数据。

粗略算法:

  1. 如果上一个Company为空或与当前行的值不匹配,则打印Company值。
  2. 如果上一个Department为空或与当前行的值不匹配,则打印Department值。
  3. 打印Employee
  4. 的值
  5. 如果这不是最后一条记录,请转到步骤1.
  6. 遵循此算法应该很容易让您进入像

    这样的显示
    Company | Department | Employee
    -------------------------------
    A       | Accounting | John
            |            | Bill
            | Billing    | Jane
            |            | Debra
    

    您的微小改编可以使它更漂亮。 :)