Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/258.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP/MYSQL按列分组,包含2个联接表_Php_Mysql - Fatal编程技术网

PHP/MYSQL按列分组,包含2个联接表

PHP/MYSQL按列分组,包含2个联接表,php,mysql,Php,Mysql,我有一个名为“class”的表,其中字段为“section”,section字段在“section”表和“course”表中联接。现在我想显示所有不同的“部分”,并将其分组为“课程”: 这是我的查询代码 return $this->_db->select(" SELECT DISTINCT class.section, section.id,

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

这是我的查询代码

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);

您的数据应按原样正确返回。也就是说,像
print\r()
这样的语句永远不会返回分组到一个漂亮的“分组”列表中的数据。那不是它的工作;你必须自己去做

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

示例数据:

公司|部门|员工
-------------------------------
会计约翰
A |会计|法案
A |账单|简
A |账单|黛布拉
要将此数据打印到表中,分组到
公司
部门
,我们需要遍历数据

粗略算法:

  • 如果上一个
    公司
    为空或与当前行的值不匹配,则打印
    公司
  • 如果上一个
    部门
    为空或与当前行的值不匹配,则打印
    部门
  • 打印
    Employee的值
  • 如果这不是最后一条记录,请转至步骤1
  • 按照这个算法应该很容易让你看到一个像

    公司|部门|员工
    -------------------------------
    会计约翰
    ||法案
    |账单|简
    ||黛布拉
    

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

    你在做什么?您没有对聚合进行任何操作。我想按课程对其进行分组,课程由各个部分连接,然后显示该课程下的所有部分。
    groupby
    子句用于聚合。不显示在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);