我有一个数据库问题,基本上一门课程可以有很多模块,这些模块可以在每一门课程上。因此,课程1可以包含模块1和模块2,但课程2可能只包含模块2.我希望在模块表中使用JSON来存储时间表信息。
我希望能够获得每门课程的模块列表。
我想要做的是从模块中选择其中的module *(从课程中选择moduleIDs = USERSPECIFEDCOURSE)
我想让它返回模块表中的所有行,其中ID与用户选择的课程相匹配 这会有什么回报,有更好的方法吗?
答案 0 :(得分:1)
由于tbl_modules和tbl_Courses之间存在多对多关系,因此应删除moduleIDS列并创建一个新的“关系”表:
tbl_module_course_relations:
courseName moduleID
Cpting with games 1
Cpting with games 2
Cpting 1
您的查询将变为:
SELECT * from modules where moduleID in (select moduleID from tbl_module_course_relations where courseName = USERSPECIFEDCOURSE);
实际上,最好在每个表中添加“id”列,并将其依赖于“relation”表和外键。
tbl_courses:
courseID courseName
1 Cpting with games
2 Cpting
tbl_module_course_relations:
courseID moduleID
1 1
1 2
2 1
和查询:
SELECT * from modules where moduleID in (select tbl_module_course_relations.moduleID from tbl_module_course_relations, courses where tbl_module_course_relations.courseID = courses.courseID and courses.courseName = USERSPECIFEDCOURSE);