diff --git a/django/db/models/sql/query.py b/django/db/models/sql/query.py
index 3044882..bed996a 100644
--- a/django/db/models/sql/query.py
+++ b/django/db/models/sql/query.py
@@ -880,7 +880,7 @@ class Query(object):
 
         for f, model in opts.get_fields_with_model():
             if (not f.rel or (restricted and f.name not in requested) or
-                    (not restricted and f.null) or f.rel.parent_link):
+                    (not restricted and f.null)):
                 continue
             table = f.rel.to._meta.db_table
             if nullable or f.null:
@@ -898,13 +898,19 @@ class Query(object):
                             promote=promote)
             else:
                 alias = root_alias
+
+            # For parent links all tables are already joined in "if model:" clause above
+            # Also we don't need to recurse further along parent links
+            if f.rel.parent_link:
+                continue
+
             alias = self.join((alias, table, f.column,
                     f.rel.get_related_field().column), exclusions=used,
                     promote=promote)
             used.add(alias)
             self.related_select_cols.extend([(alias, f2.column)
-                    for f2 in f.rel.to._meta.fields])
-            self.related_select_fields.extend(f.rel.to._meta.fields)
+                    for f2 in f.rel.to._meta.local_fields])
+            self.related_select_fields.extend(f.rel.to._meta.local_fields)
             if restricted:
                 next = requested.get(f.name, {})
             else:
diff --git a/tests/regressiontests/model_inheritance_select_related/__init__.py b/tests/regressiontests/model_inheritance_select_related/__init__.py
new file mode 100644
index 0000000..e69de29
diff --git a/tests/regressiontests/model_inheritance_select_related/models.py b/tests/regressiontests/model_inheritance_select_related/models.py
new file mode 100644
index 0000000..a678562
--- /dev/null
+++ b/tests/regressiontests/model_inheritance_select_related/models.py
@@ -0,0 +1,45 @@
+"""
+Regression tests for the interaction between model inheritance and
+select_related().
+"""
+
+from django.db import models
+
+class Place(models.Model):
+    name = models.CharField(max_length=50)
+
+    class Meta:
+        ordering = ('name',)
+        
+    def __unicode__(self):
+        return u"%s the place" % self.name
+
+class Restaurant(Place):
+    serves_suhsi = models.BooleanField()
+    serves_steak = models.BooleanField()
+
+    def __unicode__(self):
+        return u"%s the restaurant" % self.name
+
+class Person(models.Model):
+    name = models.CharField(max_length=50)
+    favorite_restaurant = models.ForeignKey(Restaurant)
+
+    def __unicode__(self):
+        return self.name
+
+__test__ = {'API_TESTS':"""
+# Regression for #7246
+
+>>> r1 = Restaurant.objects.create(name="Nobu", serves_suhsi=True, serves_steak=False)
+>>> r2 = Restaurant.objects.create(name="Craft", serves_suhsi=False, serves_steak=True)
+>>> p1 = Person.objects.create(name="John", favorite_restaurant=r1)
+>>> p2 = Person.objects.create(name="Jane", favorite_restaurant=r2)
+
+>>> Person.objects.order_by('name').select_related()
+[<Person: Jane>, <Person: John>]
+
+>>> jane = Person.objects.order_by('name').select_related('favorite_restaurant')[0]
+>>> jane.favorite_restaurant.name
+u'Nobu'
+"""}
\ No newline at end of file
