UNION ALL - ЗАКАЗАТЬ ПО, сортировка
Я получаю записи из 3 таблиц:
(
SELECT
f.id AS id,
'Faktura VAT' as type,
DATE_FORMAT(f.date_issue, '%d.%m.%Y') AS date_issue
FROM Invoice_vat f
)
UNION ALL
(
SELECT
f.id AS id,
'Faktura korygująca' as type,
DATE_FORMAT(f.date_issue, '%d.%m.%Y') AS date_issue
FROM Invoice_fks f
)
UNION ALL
(
SELECT
f.id AS id,
'Faktura proforma' as type,
DATE_FORMAT(f.date_issue, '%d.%m.%Y') AS date_issue
FROM Invoice_pro f
)
ORDER BY date_issue DESC
Я пытаюсь отсортировать все это с помощью поля "date_issue", но это не работает... Есть идеи?
2 ответа
Решение
Это сортировка по "date_issue". Проблема в том, что в паршивом формате день месяца первый. Итак, список может начинаться с 1 января, но 1 февраля - до 2 января. Я бы исправил это, используя канонический формат YYYY-MM-DD, стандартный формат ISO для дат.
Вы также можете легко исправить это, включив исходный столбец в вывод:
(
SELECT
f.id AS id,
'Faktura VAT' as type,
DATE_FORMAT(f.date_issue, '%d.%m.%Y') AS date_issue,
f.date_issue as orig_date_issue
FROM Invoice_vat f
)
UNION ALL
(
SELECT
f.id AS id,
'Faktura korygująca' as type,
DATE_FORMAT(f.date_issue, '%d.%m.%Y') AS date_issue,
f.date_issue as orig_date_issue
FROM Invoice_fks f
)
UNION ALL
(
SELECT
f.id AS id,
'Faktura proforma' as type,
DATE_FORMAT(f.date_issue, '%d.%m.%Y') AS date_issue,
f.date_issue as orig_date_issue
FROM Invoice_pro f
)
ORDER BY orig_date_issue DESC;
Вы можете использовать подзапрос, если вы на самом деле не хотите выбирать поле.
Вы сортируете по измененной версии date_issue
, поэтому он будет сортироваться как строка, а не как дата.
Попробуйте выполнить форматирование для последней даты, а не для каждой Union
:
Select ID,
Type,
DATE_FORMAT(date_issue, '%d.%m.%Y') As Date_Issue
From
(
(
SELECT
f.id AS id,
'Faktura VAT' as type,
f.date_issue
FROM Invoice_vat f
)
UNION ALL
(
SELECT
f.id AS id,
'Faktura korygująca' as type,
f.date_issue
FROM Invoice_fks f
)
UNION ALL
(
SELECT
f.id AS id,
'Faktura proforma' as type,
f.date_issue
FROM Invoice_pro f
)
) A
ORDER BY A.date_issue DESC