我的数据库中有一个像这样的表。
**lecturerID** **session** **Notes** **studentID**
aaa 45 something 123
bbb exams something 345
aaa lecture something 234
aaa auditions something 234
bbb sdfsdf something 234
ccc werwe something 234
现在我想要的是将我的数据分类为"讲义"。
例如:讲师id = aaa
sessions = 45,讲座,试镜。
笔记=某事,某事,某事
在此页面上,将显示有关所有会话的所有信息:讲授ID应仅出现一次。其余的,会话, 每个课程的学生详细信息,笔记,学生会有所不同。
答案 0 :(得分:0)
我通常做的只是获取所有行,然后通过PHP数组对数据进行分类,如下所示:
$res = $db->query("SELECT * FROM table");
$lecturers = array();
while($line = $res->fetch_assoc()){
if(!isset($lecturers[$line["lecturerID"]]))
$lecturers[$line["lecturerID"]] = array();
$lecturers[$line["lecturerID"]][] = $line;
}
讲师数组将包含子数组,其中包含属于讲座ID的行。
现在,您只需循环浏览它们并创建HTML输出或任何您想要的内容。
foreach($lecturers as $lecturerID => $rows){
echo '<h1>Lecturer: '.$lecturerID.'</h1>';
for($i=0;$i<count($rows);$i++){
echo '<p>Session: '.$rows[$i]["session"].'</p>';
echo '<p>Notes: '.$rows[$i]["Notes"].'</p>';
...
}
}
答案 1 :(得分:0)
试试这个:
SELECT lecturerID, GROUP_CONCAT(DISTINCT session) as sessions, GROUP_CONCAT(DISTINCT notes) as notes, GROUP_CONCAT(DISTINCT studentID) as student_ids
FROM table
GROUP BY lecturerID;