首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从计划数据创建时间表视图

问从计划数据创建时间表视图
EN

Stack Overflow用户
提问于 2017-01-23 12:45:33
回答 1查看 289关注 0票数 1

目前,我正在PHP和MySQL中使用Codeigniter框架开发一个时间表程序。我有具有以下数据的schedule表:

代码语言:javascript
复制
+-------------+--------------+-----------+--------+
| Schedule ID | Subject Name | Day       | Period |
+-------------+--------------+-----------+--------+
| 1           | Biology      | Monday    | 1      |
| 2           | Biology      | Wednesday | 2      |
| 3           | Biology      | Friday    | 3      |
| 4           | Physics      | Tuesday   | 8      |
| 5           | Physics      | Thursday  | 6      |
| 6           | Math         | Monday    | 7      |
+-------------+--------------+-----------+--------+

我可以将schedule表的每一行作为数组。我想在以下视图中创建一个时间表(使用HTML表):

代码语言:javascript
复制
+---+---------+---------+-----------+----------+---------+
| # | Monday  | Tuesday | Wednesday | Thursday | Friday  |
+---+---------+---------+-----------+----------+---------+
| 1 | Biology |         |           |          |         |
+---+---------+---------+-----------+----------+---------+
| 2 |         |         | Biology   |          |         |
+---+---------+---------+-----------+----------+---------+
| 3 |         |         |           |          | Biology |
+---+---------+---------+-----------+----------+---------+
| 4 |         |         |           |          |         |
+---+---------+---------+-----------+----------+---------+
| 5 |         |         |           |          |         |
+---+---------+---------+-----------+----------+---------+
| 6 |         |         |           | Physics  |         |
+---+---------+---------+-----------+----------+---------+
| 7 | Math    |         |           |          |         |
+---+---------+---------+-----------+----------+---------+
| 8 |         | Physics |           |          |         |
+---+---------+---------+-----------+----------+---------+

如能以上述格式创建表格,我将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-01-23 12:51:11

试试这个:

代码语言:javascript
复制
SELECT ScheduleID,
       MAX(CASE WHEN Day = 'Monday' THEN SubjectName END) AS Monday,
       MAX(CASE WHEN Day = 'Tuesday' THEN SubjectName END) AS Tuesday,
       MAX(CASE WHEN Day = 'Wednesday' THEN SubjectName END) AS Wednesday,
       MAX(CASE WHEN Day = 'Thursday' THEN SubjectName END) AS Thursday,
       MAX(CASE WHEN Day = 'Friday' THEN SubjectName END) AS Friday
FROM mytable
GROUP BY ScheduleID

Demo here

编辑:

您似乎希望按照Period而不是ScheduleID进行分组。您可以创建包含所有可能的Period值的内联表,或者使用查找表(如果已经有):

代码语言:javascript
复制
SELECT t1.Period,
       MAX(CASE WHEN Day = 'Monday' THEN SubjectName END) AS Monday,
       MAX(CASE WHEN Day = 'Tuesday' THEN SubjectName END) AS Tuesday,
       MAX(CASE WHEN Day = 'Wednesday' THEN SubjectName END) AS Wednesday,
       MAX(CASE WHEN Day = 'Thursday' THEN SubjectName END) AS Thursday,
       MAX(CASE WHEN Day = 'Friday' THEN SubjectName END) AS Friday 
FROM (SELECT 1 AS Period UNION ALL 
      SELECT 2 UNION ALL 
      SELECT 3 UNION ALL 
      SELECT 4 UNION ALL 
      SELECT 5 UNION ALL 
      SELECT 6 UNION ALL 
      SELECT 7 UNION ALL 
      SELECT 8) AS t1
LEFT JOIN mytable AS t2 ON t1.Period = t2.Period
GROUP BY t1.Period

Demo here

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41806742

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档