Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Сложный Order by / 5 сообщений из 5, страница 1 из 1
15.12.2014, 08:21:56
    #38833747
Yanis
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сложный Order by
Здравствуйте.

Есть два рабочих запроса:
Код: sql
1.
2.
3.
Select fields From tables_joins where 
WHERE conditions AND toTop=1
ORDER BY top_time DESC


Код: sql
1.
2.
3.
Select fields From tables_joins where 
WHERE conditions AND toTop=0
ORDER BY raise_time DESC



Выдача полей идентичная.
Сначала выполняется верхний запрос, затем - нижний.
Помогите, пожалуйста, объединить эти запросы в один.

Сделать можно все, только знать бы - как
...
Рейтинг: 0 / 0
15.12.2014, 09:14:05
    #38833780
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сложный Order by
UNION ALL, какие проблемы? И при чём тут ORDER BY?

Или, может, имеется в виду, что в выходном наборе они должны быть сортированы так - сначала записи первого набора, потом второго? тогда в выходном наборе должны быть поля (если их нет - добавить) toTop, top_time и raise_time, и суммарный набор сортировать по
Код: sql
1.
ORDER BY toTop DESC, CASE toTop WHEN 1 THEN top_time WHEN 0 THEN raise_time END
...
Рейтинг: 0 / 0
15.12.2014, 15:59:23
    #38834274
Yanis
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сложный Order by
AkinaUNION ALL, какие проблемы? И при чём тут ORDER BY?

Или, может, имеется в виду, что в выходном наборе они должны быть сортированы так - сначала записи первого набора, потом второго? тогда в выходном наборе должны быть поля (если их нет - добавить) toTop, top_time и raise_time, и суммарный набор сортировать по
Код: sql
1.
ORDER BY toTop DESC, CASE toTop WHEN 1 THEN top_time WHEN 0 THEN raise_time END




Спасибо огромное!
Я почему-то не догадывался условия внутри Order by ставить.
Было интересно как раз без Union обойтись. Считайте это спортивным интересом.

По времени получилось (два прогона каждого запроса всего сделал) вот что:
Запрос1 = 0.0028
Запрос2 = 0.0111
ORDER BY toTop DESC, CASE toTop WHEN 1 THEN top_time WHEN 0 THEN raise_time END DESC = 0,0175
(Запрос1) UNION (Запрос2) = 0,0591
...
Рейтинг: 0 / 0
15.12.2014, 16:03:55
    #38834276
Yanis
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сложный Order by
(Запрос1) UNION ALL (Запрос2) = 0,0482
...
Рейтинг: 0 / 0
15.12.2014, 20:01:12
    #38834509
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сложный Order by
YanisЯ почему-то не догадывался условия внутри Order by ставить.case тут не условие, а выражение
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Сложный Order by / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]