PHP/MYSQL按列分组,包含2个联接表
我有一个名为“class”的表,其中字段为“section”,section字段在“section”表和“course”表中联接。现在我想显示所有不同的“部分”,并将其分组为“课程”: 这是我的查询代码PHP/MYSQL按列分组,包含2个联接表,php,mysql,Php,Mysql,我有一个名为“class”的表,其中字段为“section”,section字段在“section”表和“course”表中联接。现在我想显示所有不同的“部分”,并将其分组为“课程”: 这是我的查询代码 return $this->_db->select(" SELECT DISTINCT class.section, section.id,
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的值
公司|部门|员工
-------------------------------
会计约翰
||法案
|账单|简
||黛布拉
您的小改动可以使它更漂亮。:) 你在做什么?您没有对聚合进行任何操作。我想按课程对其进行分组,课程由各个部分连接,然后显示该课程下的所有部分。
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);