diff --git a/db_schema.sql b/db_schema.sql
index dca92485183b6e56b7f863598722887252853d79..43ad82ee8fb90635da6afe94d8e7ff19db7530b8 100644
--- a/db_schema.sql
+++ b/db_schema.sql
@@ -231,7 +231,7 @@ CREATE TABLE IF NOT EXISTS `sorterrorlog_data` (
 );
 
 CREATE VIEW IF NOT EXISTS `courses` AS select * from `courses_data` where (not(`courses_data`.`deleted`));
-CREATE VIEW IF NOT EXISTS `lectures` AS select * from `lectures_data` where (not(`lectures_data`.`deleted`));
-CREATE VIEW IF NOT EXISTS `videos` AS select * from `videos_data` where (not(`videos_data`.`deleted`));
+CREATE VIEW IF NOT EXISTS `lectures` AS select `lectures_data`.* from `lectures_data` join `courses_data` on (`courses_data`.`id` = `course_id`) where (not(`lectures_data`.`deleted` or `courses_data`.`deleted`));
+CREATE VIEW IF NOT EXISTS `videos` AS select `videos_data`.* from `videos_data` join `lectures_data` on (`lectures_data`.`id` = `lecture_id`) join `courses_data` on (`courses_data`.`id` = `course_id`) where (not(`videos_data`.`deleted` or `lectures_data`.`deleted` or `courses_data`.`deleted`));
 CREATE VIEW IF NOT EXISTS `sorterrorlog` AS select * from `sorterrorlog_data` where (not(`sorterrorlog_data`.`deleted`));
 COMMIT;
diff --git a/server.py b/server.py
index 71289fbc217c6cc61eaf853d5b850bdcb8c502ee..3d6a5407da9956ec452054bb2255d92b3f3ea449 100644
--- a/server.py
+++ b/server.py
@@ -579,6 +579,8 @@ def suggest_chapter(lectureid):
 @app.route('/chapters/<int:lectureid>')
 def chapters(lectureid):
 	chapters = query("SELECT * FROM chapters WHERE lecture_id = ? and visible ORDER BY time DESC", lectureid)
+	if not chapters:
+		return 'No chapters found', 404
 	last = None
 	for c in chapters:
 		c['start'] = c['time']