2014-12-05 6 views
0

У меня проблема с базой данных, где в основном один курс может иметь много модулей, и эти модули могут быть на каждом отдельном курсе. Итак, курс 1 может содержать модуль 1 и модуль 2, но курс 2 может содержать только модуль 2. Я надеюсь использовать JSON в таблице модулей для хранения информации о расписании.База данных SQLite с JOIN и SELECT

Я хочу, чтобы получить список модулей на каждом курсе.

То, что я хотел бы сделать, это SELECT * из модулей, где moduleID в (выберите moduleIDs из курсов, где courseName = USERSPECIFEDCOURSE)

Я хочу, чтобы это вернуть все строки в таблице модулей, где их идентификатор соответствие с курс пользователя выбрал Что это даст, есть ли лучший способ сделать это?

db

ответ

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» в каждой таблице и полагаться на нее для таблицы «Отношение» и внешних ключей.

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); 
+0

Это именно то, что мне было нужно. Огромное спасибо. –

Смежные вопросы