diff --git a/aleksis/apps/chronos/models.py b/aleksis/apps/chronos/models.py
index 09ed5d838259508080f60dcd60166670a7a58afa..ab445938d9fab4de1a23c601dfc53130c8ed2719 100644
--- a/aleksis/apps/chronos/models.py
+++ b/aleksis/apps/chronos/models.py
@@ -127,10 +127,17 @@ class LessonDataQuerySet(models.QuerySet):
     def filter_group(self, group: Union[Group, int]):
         """ Filter for all lessons a group (class) regularly attends. """
 
-        return self.filter(
-            Q(**{self._period_path + "lesson__groups": group})
-            | Q(**{self._period_path + "lesson__groups__parent_groups": group})
-        )
+        if isinstance(group, int):
+            group = Group.objects.get(pk=group)
+
+        if group.parent_groups.all():
+            # Prevent to show lessons multiple times
+            return self.filter(Q(**{self._period_path + "lesson__groups": group}))
+        else:
+            return self.filter(
+                Q(**{self._period_path + "lesson__groups": group})
+                | Q(**{self._period_path + "lesson__groups__parent_groups": group})
+            )
 
     def filter_teacher(self, teacher: Union[Person, int]):
         """ Filter for all lessons given by a certain teacher. """
@@ -443,7 +450,7 @@ class Lesson(ExtensibleModel):
         return CalendarWeek(year=year, week=week)
 
     class Meta:
-        ordering = ["date_start"]
+        ordering = ["date_start", "subject"]
         indexes = [models.Index(fields=["date_start", "date_end"])]
 
 
@@ -552,7 +559,7 @@ class LessonPeriod(ExtensibleModel):
         )
 
     class Meta:
-        ordering = ["lesson__date_start", "period__weekday", "period__period"]
+        ordering = ["lesson__date_start", "period__weekday", "period__period", "lesson__subject"]
         indexes = [models.Index(fields=["lesson", "period"])]
 
 
diff --git a/aleksis/apps/chronos/views.py b/aleksis/apps/chronos/views.py
index e94b3feab5dcd4532bddc7fd4fcfe4248ebf8477..310b6f44841e28e944bb574caeb86b3feafa69d8 100644
--- a/aleksis/apps/chronos/views.py
+++ b/aleksis/apps/chronos/views.py
@@ -30,8 +30,12 @@ def all_timetables(request: HttpRequest) -> HttpResponse:
     teachers = Person.objects.annotate(
         lessons_count=Count("lessons_as_teacher")
     ).filter(lessons_count__gt=0)
-    classes = Group.objects.annotate(lessons_count=Count("lessons")).filter(
-        lessons_count__gt=0, parent_groups=None
+    groups = Group.objects.annotate(
+        lessons_count=Count("lessons"),
+        child_lessons_count=Count("child_groups__lessons"),
+    )
+    classes = groups.filter(lessons_count__gt=0, parent_groups=None) | groups.filter(
+        child_lessons_count__gt=0, parent_groups=None
     )
     rooms = Room.objects.annotate(lessons_count=Count("lesson_periods")).filter(
         lessons_count__gt=0