带有JOIN和SELECT的SQLite数据库

时间:2014-12-05 08:17:54

标签: sql sqlite

我有一个数据库问题,基本上一门课程可以有很多模块,这些模块可以在每一门课程上。因此,课程1可以包含模块1和模块2,但课程2可能只包含模块2.我希望在模块表中使用JSON来存储时间表信息。

我希望能够获得每门课程的模块列表。

我想要做的是从模块中选择其中的module *(从课程中选择moduleIDs = USERSPECIFEDCOURSE)

我想让它返回模块表中的所有行,其中ID与用户选择的课程相匹配 这会有什么回报,有更好的方法吗?

db

1 个答案:

答案 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);