diff --git a/application/models/tables/CourseCrosslistings.php b/application/models/tables/CourseCrosslistings.php
index 0df18fb4f79477f23afb3242dc8241a7afd95d5f..d59af3817881af5ef2cc63eb5a19d27136e8ec1e 100644
--- a/application/models/tables/CourseCrosslistings.php
+++ b/application/models/tables/CourseCrosslistings.php
@@ -37,11 +37,13 @@ class CourseCrosslistings extends Local_Db_CourseTableMany
         $select->join('creq_course_crosslistings',
                       'creq_course_codes.id = creq_course_crosslistings.course_code',
                       'id');
-        $select->join('creq_courses',
-                      'creq_course_crosslistings.generation = creq_courses.current_generation');
+        $select->join('creq_course_generations',
+                      'creq_course_crosslistings.generation = creq_course_generations.id');
+        $select->where('creq_course_generations.type = "official"');
         $select->where($db->quoteInto('subject = ?', $subject));
         $select->where($db->quoteInto('course_number = ?', $number));
         $select->where($db->quoteInto('course_letter = ?', $letter));
+        $select->order('created DESC');
 
         $row = $db->fetchRow($select);
         $result = $me->find($row['id']);