本次开发采用mysql数据库,遇到一个非常难搞的业务需求。这里先上本项目的数据库设计:
在这里我用自己的话概括一下关于课程这张表的事情。
课程分为免费跟收费,但是数据库的表中没有一个叫”is_free”的字段,但有一个叫”price”的字段,当price==0.0的时候我们就叫免费,当price>0.0的时候我们叫收费,免费的课程并不是都可以学习,我们依然采用“需要购买的方式”,即使是免费也需要购买,只有购买了课程,这个课程的学习人数才能加一。
业务需求比较复杂,具有学习卡这个东西,学习卡是要买的,里面存储着收费的课程。所以只要买了学习卡就相当于购买了课程,这些课程的学习人数都得加一。
使用中的学习卡部分的课程:
1、获取在使用中的学习卡的课程的部分信息:
SELECT
c.id AS "id",
c.course_num AS "courseNum",
c.course_name AS "courseName",
c.price AS "price"
FROM
course AS c , stuc_course AS scs, study_card AS scd
WHERE
scd.id=scs.stuc_id AND scs.course_id=c.id AND scd.is_used=1
得到的数据当然会有重复,因为我只是显示了部分字段,正因为如此,我才可以计算学习人数,结果如下:
2、获取在使用中的学习卡的课程的部分信息和学习人数: