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
Другие вопросы по тегам