MySQL UNION запрос из одной таблицы + ORDER BY
У меня есть одна таблица с двумя запросами, и мне нужно отсортировать ее по убыванию, используя ORDER BY. Вот мой запрос MySQL, который не работает должным образом:
(SELECT `text`
FROM `comments`
WHERE user_fr='".$user."' && archive='1'
ORDER BY `is_new_fr` DESC)
UNION
(SELECT `text`
FROM `message`
WHERE user_to='".$user."' && archive='1'
ORDER BY `is_new_to` DESC)
Описание!
is_new_fr и is_new_to подсчитывают общее количество новых сообщений.
Вот моя таблица:
user_fr | user_to | архив | is_new_fr | is_new_to | текст
имя1 | имя2 | 1 | 2 | 0 | тестирование...
имя2 | имя1 | 1 | 0 | 5 | тестирование...
Я хочу сделать заказ, что 1-й будет отображать заметку, которая имеет больше сообщений для немногих или другими словами, используя тип DESCending
Это отображение на странице, которую я хочу сделать:
Открыть диалог с именем2. Сообщения (5) Открыть диалог с именем1. Сообщения (2)
Спасибо!
1 ответ
Решение
Единственный способ, которым я знаю, это подзапрос:
SELECT `text`
FROM (
SELECT `text`, `is_new_fr` AS `is_new`
FROM `comments`
WHERE user_fr = '".$user."'
AND archive = '1'
UNION
SELECT `text`, `is_new_to` AS `is_new`
FROM `message`
WHERE user_to = '".$user."'
AND archive = '1'
) ORDER BY `is_new` DESC