10.在SQL中实现行转列,单个表单内部分数据联动刷新

课程内容

在SQL中实现行转列 单个表单内部分数据联动刷新

课程目标

掌握行转列的SQL写法,掌握表单中部分数据联动刷新的方法

课程概要

在SQL中实现行转列

现在我们课程表的基础信息设置已经开发完成,到了要设置和展示最终结构的时候了,先让我们看看课程表长什么样。

kcb

课程表是一张二维表,数据库中的表也是二维表,那么能不能够直接存入到数据库中?

能,但是不推荐这样做。

正确的做法应该是这样的:将星期几和第几节课都设计成课程表的一个属性,与课程平行对应;这样做的好处是:

  1. 方便统计每周有多少节什么课程。

  2. 方便扩展,如果周六需要上课,只需要添加行,而不是修改表结构。

  3. 空间利用率更高,不会存在空白“单元格”。

课程表表结构设计

SQL写法

SELECT
course_plan.slot,

MAX( IF(course_plan.`week` = 1, course_plan.course_name, NULL) ) week1,
MAX( IF(course_plan.`week` = 2, course_plan.course_name, NULL) ) week2,
MAX( IF(course_plan.`week` = 3, course_plan.course_name, NULL) ) week3,
MAX( IF(course_plan.`week` = 4, course_plan.course_name, NULL) ) week4,
MAX( IF(course_plan.`week` = 5, course_plan.course_name, NULL) ) week5

FROM
course_plan
WHERE
course_plan.class_id = 1
GROUP BY
course_plan.slot

单个表单内部分数据联动刷新

下拉选择后,触发影响表单窗口事件,表单窗口数据源将不需要刷新的输入域封装到SQL中

允许触发事件

触发窗口受影响

SELECT
@12-WEEK@ week,
@12-SLOT@ slot,
@12-CCT_ID@ cct_id,
class_course_teacher.class_name,
class_course_teacher.course_name,
class_course_teacher.teacher_name
FROM
class_course_teacher
WHERE
class_course_teacher.id = @12-CCT_ID@

results matching ""

    No results matching ""