У меня проблема с пониманием ORDER BY
в MySQL
. Мне нужно отсортировать таблицу по 3 критериям
1 -Сначала я хочу отсортировать по ТИП _ИЗ _РАБОТЫ , поэтому все данные должны быть в алфавитном порядке, например
dech_rap_bus
dech_rap_bus
ger_dem_dech_bus
ger_dem_dech_bus
ger_dem_stp_pp
...
РЕЗУЛЬТАТ =>http://sqlfiddle.com/#!2/b2a858/6
2 -секунда, которую я хочу отсортировать по ПРОЕКТУ _ВЕРСИИ , поэтому все данные должны быть в алфавитном порядке, но с соблюдением 1 критерия, например
dech_rap_bus V123-V1234
dech_rap_bus V300
ger_dem_dech_bus V123-V1234
ger_dem_dech_bus V300
ger_dem_stp_pp V123-V1234
РЕЗУЛЬТАТ =>http://sqlfiddle.com/#!2/b2a858/7
Итак, 1 и 2 работают отлично.
3 -и после этого я хочу отсортировать по столбцу не существующему _
РЕЗУЛЬТАТ =>http://sqlfiddle.com/#!2/b2a858/5
и я не знаю, что он на самом деле делает, но я не вижу результатов... я просто хочу, чтобы
деч _рэп _автобус V300
где столбец НЕ _СУЩЕСТВУЮЩИЙ равен 1 в конце, а когда больше НЕ _СУЩЕСТВУЮЩИЙ = 1 , чтобы отсортировать их все, кроме конца таблицы.
Я подумал, что мне поможет UNION 2 select
/* Selecting all data where not_existing is not 1 or NULL ---> working good! */
(
SELECT
*
FROM
atm_mti_view
WHERE
project_function='FRS01' AND
on_big_project_id = 12 AND
(not_existing != 1 OR not_existing IS NULL)
ORDER BY
type_of_work ASC,
project_version ASC
)
UNION
/* Selecting all data where not_existing is 1 ---> working good! */
(
SELECT
*
FROM
atm_mti_view
WHERE
project_function='FRS01' AND
on_big_project_id = 12 AND
not_existing = 1
ORDER BY
type_of_work ASC,
project_version ASC
)
но что делает этот фрагмент кода, ставит несуществующую шину dech _rap _в конец, хорошо, но это портит сортировку версий, ПОЧЕМУ???
ПОСМОТРЕТЬ РЕЗУЛЬТАТ ЗДЕСЬ =>http://sqlfiddle.com/#!2/b2a858/8
Это почему? Я просто хочу ОБЪЕДИНИТЬ два результата выбора, что я делаю неправильно?
Спасибо.