我有一个名为“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);
答案 0 :(得分:1)
您的数据应该按原样正确返回。话虽如此,像print_r()
这样的语句永远不会将数据分组到一个漂亮的“分组”列表中。那不是它的工作;你必须自己做。
要获得所需的结果,您需要遍历数据。如果要分组的列与上一行中的列相同,则无需再次将其写入表中。由于这不是编码服务,我会给你一个示例数据集,你可以在那里工作。
示例数据:
Company | Department | Employee
-------------------------------
A | Accounting | John
A | Accounting | Bill
A | Billing | Jane
A | Billing | Debra
要将此数据打印到表格中,并在Company
和Department
上进行分组,我们需要遍历数据。
粗略算法:
Company
为空或与当前行的值不匹配,则打印Company
值。Department
为空或与当前行的值不匹配,则打印Department
值。Employee
遵循此算法应该很容易让您进入像
这样的显示Company | Department | Employee
-------------------------------
A | Accounting | John
| | Bill
| Billing | Jane
| | Debra
您的微小改编可以使它更漂亮。 :)