﻿id	summary	reporter	owner	description	type	status	component	version	severity	resolution	keywords	cc	stage	has_patch	needs_docs	needs_tests	needs_better_patch	easy	ui_ux
9578	order_by() removing select_related() joined tables when with extra() query sets	Marinho Brandão	Malcolm Tredinnick	"When using extra + select_related + order_by, the joins are not generated by as_sql().

Look on the examples below:

Without order_by()

{{{
qs.extra(
    select={
        'once_title': 'case when feed_id is not null then feedjack_feed.title else podcasts_streamsource.title end'
        },
    ).select_related()
}}}

SQL:

{{{
(u'SELECT (case when feed_id is not null then feedjack_feed.title else podcasts_streamsource.title end) AS ""once_title"", ""podcasts_channel"".""id"", ""podcasts_channel"".""feed_id"", ""podcasts_channel"".""stream_source_id"", ""podcasts_channel"".""image_url"", ""podcasts_channel"".""media_rating"", ""podcasts_channel"".""language"", ""podcasts_channel"".""tags"" FROM ""podcasts_channel"" LEFT OUTER JOIN ""feedjack_feed"" ON (""podcasts_channel"".""feed_id"" = ""feedjack_feed"".""id"") LEFT OUTER JOIN ""podcasts_streamsource"" ON (""podcasts_channel"".""stream_source_id"" = ""podcasts_streamsource"".""id"") ORDER BY ""feedjack_feed"".""title"" ASC, ""podcasts_streamsource"".""title"" ASC', ())
}}}

Now, adding order_by() method

{{{
qs.extra(
    select={
        'once_title': 'case when feed_id is not null then feedjack_feed.title else podcasts_streamsource.title end'
        },
    ).select_related().order_by('once_title')
}}}

SQL

{{{
(u'SELECT (case when feed_id is not null then feedjack_feed.title else podcasts_streamsource.title end) AS ""once_title"", ""podcasts_channel"".""id"", ""podcasts_channel"".""feed_id"", ""podcasts_channel"".""stream_source_id"", ""podcasts_channel"".""image_url"", ""podcasts_channel"".""media_rating"", ""podcasts_channel"".""language"", ""podcasts_channel"".""tags"" FROM ""podcasts_channel"" ORDER BY ""once_title"" ASC', ())
}}}
"		closed	Database layer (models, ORM)	1.0		invalid			Unreviewed	0	0	0	0	0	0
