mysql联合排序_mysql多个表联合排序

开发过程中遇到个mysql的问题,我有多个表,多个表之间有联系,每个表都有单独的排序。

course > course_level > course_unit > course_lesson,这四个表的层级关系就是课程下面很多level,每个level下面有多个unit,每个unit下面有多个lesson,所有表的排序字段均为sort,全部是按照升序排列,如果某个级别sort相同,就按照id升序排列,例如level表里面id=5的sort是0,id=10的sor也是0,那么id5就排在前,每个子级别下的sort互不干扰,例如,course_unit表里面的course_level_id=2,和course_level_id=5的unit都会出现sort=0,sort=5的情况,意思就是下级的排序和上级的排序相关联。

现在我需要根据course,course_level,course_unit的顺序来把course_lesson的顺序确定下来,就是整个课程体系的id排序,请问这个mysql语句怎么写?lesson_id大概有1000个,只需要排好序的course_lesson表里面的id字段。

#课程分类表

DROP TABLE IF EXISTS `course`;

CREATE TABLE `course` (

`id` int(11) unsigned NOT NULL AUTO_INCREMENT,

`course_type` tinyint(3) unsigned NOT NULL DEFAULT '0' COMMENT '课程类型(1.语文;2.数学;)',

`lesson_type` tinyint(3) NOT NULL DEFAULT '0' COMMENT '课堂类型(0.一对一试听课;1.一对一小班课;2.一对一大班课;3.一对多小班课;4.一对多大班课;5.一对多小班试听课)',

`name` varchar(64) NOT NULL DEFAULT '' COMMENT '课程名',

`level_num` tinyint(3) unsigned NOT NULL DEFAULT '0' COMMENT '该课程下总级别数量',

`unit_num` tinyint(3) unsigned NOT NULL DEFAULT '0' COMMENT '该Level下总unit数',

`lesson_num` smallint(5) unsigned NOT NULL DEFAULT '0' COMMENT '该level下总lesson数',

`lesson_class_hour` int(8) unsigned NOT NULL DEFAULT '0' COMMENT '该Level下所有Lesson总学时(分钟)',

`class_hour` int(8) DEFAULT '25' COMMENT '当前课程每节课的上课时长',

`lesson_before_time` int(8) DEFAULT '5' COMMENT '课前备课时间(分钟)',

`lesson_after_time` int(8) DEFAULT '5' COMMENT '课后休息时间(分钟)',

`lesson_interval_time` int(8) DEFAULT '15' COMMENT '课程间隔时间(分钟)',

`sort` tinyint(3) unsigned NOT NULL DEFAULT '0' COMMENT '排序顺序,升序排列',

`status` tinyint(3) unsigned NOT NULL DEFAULT '1' COMMENT '状态(1.正常;2.过期;3.无效;4.删除)',

`creator` int(11) unsigned NOT NULL,

`updator` int(11) unsigned NOT NULL DEFAULT '0',

`created_at` timestamp NULL DEFAULT NULL,

`updated_at` timestamp NULL DEFAULT NULL,

`teacher_absence_time` int(8) DEFAULT '15' COMMENT '判定老师上课缺席时间',

PRIMARY KEY (`id`)

) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8 COMMENT='课程信息表';

#课程等级表

DROP TABLE IF EXISTS `course_level`;

CREATE TABLE `course_level` (

`id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT 'LevelId',

`course_id` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '课程Id',

`name` varchar(64) NOT NULL DEFAULT '' COMMENT 'level名称,规则为level1~level6,名称固定不变',

`title` varchar(64) NOT NULL DEFAULT '' COMMENT 'Level标题',

`unit_num` tinyint(3) unsigned NOT NULL DEFAULT '0' COMMENT '该Level下总unit数',

`lesson_num` smallint(5) unsigned NOT NULL DEFAULT '0' COMMENT '该level下总lesson数',

`lesson_class_hour` int(8) unsigned NOT NULL DEFAULT '0' COMMENT '该Level下所有Lesson总学时(分钟)',

`sort` tinyint(3) unsigned NOT NULL DEFAULT '1' COMMENT '排序顺序,升序排列',

`status` tinyint(3) unsigned NOT NULL DEFAULT '1' COMMENT 'Level状态(1.正常;2.过期;3.无效;4.删除)',

`creator` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '创建者',

`updator` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '更新者',

`created_at` timestamp NULL DEFAULT NULL,

`updated_at` timestamp NULL DEFAULT NULL,

PRIMARY KEY (`id`)

) ENGINE=InnoDB AUTO_INCREMENT=15 DEFAULT CHARSET=utf8 COMMENT='课程下Level信息表';

#单元表

DROP TABLE IF EXISTS `course_unit`;

CREATE TABLE `course_unit` (

`id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT 'LevelId',

`course_id` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '所属courseId',

`course_level_id` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '课程Id',

`name` varchar(64) NOT NULL DEFAULT '' COMMENT '单元名',

`title` varchar(64) NOT NULL DEFAULT '' COMMENT '单元主题名',

`lesson_num` smallint(5) unsigned NOT NULL DEFAULT '0' COMMENT '该单元下lesson数',

`lesson_class_hour` int(8) unsigned NOT NULL DEFAULT '0' COMMENT '该单元下所有lesson总学时(分钟)',

`sort` tinyint(3) unsigned NOT NULL DEFAULT '1' COMMENT '排序顺序,升序排列',

`status` tinyint(3) unsigned NOT NULL DEFAULT '1' COMMENT 'Level状态(1.正常;2.过期;3.无效;4.删除)',

`creator` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '创建者',

`updator` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '更新者',

`created_at` timestamp NULL DEFAULT NULL,

`updated_at` timestamp NULL DEFAULT NULL,

PRIMARY KEY (`id`)

) ENGINE=InnoDB AUTO_INCREMENT=138 DEFAULT CHARSET=utf8 COMMENT='课程下单元信息表';

#课程表

DROP TABLE IF EXISTS `course_lesson`;

CREATE TABLE `course_lesson` (

`id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT 'LevelId',

`course_id` int(11) unsigned NOT NULL,

`course_level_id` int(11) unsigned NOT NULL,

`course_unit_id` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '课程Id',

`courseware_id` int(11) NOT NULL DEFAULT '0' COMMENT '课件ID',

`preview_video_id` tinyint(3) NOT NULL DEFAULT '0' COMMENT '课前预习视频',

`reference_video_id` tinyint(3) NOT NULL DEFAULT '0' COMMENT '课程参考教学视频id',

`name` varchar(64) NOT NULL DEFAULT '' COMMENT 'level名称,规则为level1~level6,名称固定不变',

`title` varchar(64) NOT NULL DEFAULT '' COMMENT '课程标题',

`topic` varchar(64) NOT NULL DEFAULT '' COMMENT '课程主题',

`subject` text NOT NULL COMMENT '课程目标',

`class_hour` tinyint(3) unsigned NOT NULL DEFAULT '0' COMMENT '课程学时(分钟)',

`sort` tinyint(3) unsigned NOT NULL DEFAULT '1' COMMENT '排序顺序,升序排列',

`status` tinyint(3) unsigned NOT NULL DEFAULT '1' COMMENT 'Level状态(1.正常;2.过期;3.无效;4.删除)',

`creator` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '创建者',

`updator` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '更新者',

`created_at` timestamp NULL DEFAULT NULL,

`updated_at` timestamp NULL DEFAULT NULL,

PRIMARY KEY (`id`)

) ENGINE=InnoDB AUTO_INCREMENT=763 DEFAULT CHARSET=utf8 COMMENT='课程下Lesson信息表';

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值