Как написать предложение ORDER BY, чтобы сначала возвращать результаты с записями в обеих таблицах? - PullRequest
0 голосов
/ 01 марта 2011

У меня есть две таблицы:

таблица: реклама поля: id, цена

таблица: автомобили поля: id, ad_id, год

Я хочу иметь возможность упорядочить результаты по cars.year - однако не все результаты будут иметь запись в таблице машин, т.е. некоторые результаты могут быть толькоесть записи в объявлениях.

В настоящее время результаты без записей возвращаются в первую очередь по моему предложению "order by cars.year ASC, ads.price ASC", я хочу, чтобы результаты, у которых нет записей автомобилей, появлялись после результатов, которые делают.

Любые идеи, как я могу с этим предложением ORDER BY?

Спасибо,

Ответы [ 3 ]

1 голос
/ 01 марта 2011

Вы можете использовать предложение ORDER BY, подобное следующему:

ORDER BY cars.id IS NULL ASC, cars.year ASC, ads.price ASC

Это поместит строки, где cars.id не является нулевым первым, отсортировано по убыванию цены. Затем будут строки, в которых cars.id равно нулю, также отсортированные по убыванию цены.

Из вашего вопроса мне не совсем ясно, какой порядок вы хотите, поэтому вам, возможно, придется немного изменить этот ответ, чтобы он соответствовал вашим потребностям.

0 голосов
/ 01 марта 2011

Используйте две команды выбора. Первая выбирает значения, в которых есть записи, и упорядочивает их. Вторая выбирает значения без записей и упорядочивает их, а затем объединяет результаты.

0 голосов
/ 01 марта 2011
order by ifnull(year,'1/1/2099'), price
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...