SQLite-запрос для извлечения данных Order By - PullRequest
1 голос
/ 15 марта 2020
(TableMain)
Task_Id  Task       DateTime          Repetition    Snooze_Time
8        Call esha  2020-3-15 12:29   1             5
9        Meeting    2020-3-15 11:50   1             1

(TableRoutine)
Task_Id  Task       DateTime          Repetition    Snooze_Time
1        Go to GYM  2020-3-15 14:18   0             0

У меня есть две таблицы в SQLite

Мне нужен такой результат в Order By DateTime: (Столбец DateTime в обеих таблицах является типом данных DateTime для SQLite) Я использую этот запрос для слияния две таблицы данных. Но мне нужны данные в формате ниже.

SELECT Task, DateTime FROM TableMain UNION ALL SELECT Task, DateTim FROM TableRoutine

Но мне нужны данные в формате ниже.

Task        DateTime       
Meeting     2020-3-15 11:50 
Call esha   2020-3-15 12:29
Go to GYM   2020-3-15 14:18

Возможно ли получить данные, подобные этим?

Ответы [ 2 ]

2 голосов
/ 15 марта 2020

Общий шаблон заключается в том, чтобы либо просто прикрепить ORDER BY на конце, либо обернуть то, что вы уже написали в другой выбор, и ЗАКАЗАТЬ по нему:

Либо:

SELECT Task, DateTime FROM TableMain 
UNION ALL 
SELECT Task, DateTim FROM TableRoutine
ORDER BY DateTime

Или:

SELECT * FROM
(
  SELECT Task, DateTime FROM TableMain 
  UNION ALL 
  SELECT Task, DateTim FROM TableRoutine
) x
ORDER BY x.DateTime

Посмотрите, какая из них подходит вам - некоторые базы данных иногда отказываются выполнять первую форму. Например, существует множество баз данных, которые этого не делают:

SELECT a, b FROM table1 
UNION ALL 
SELECT a, b FROM table2
ORDER BY COALESCE(a,b)

И требуется вторая форма (или какой-то другой прием, такой как выбор coalesce (a, b) из каждого тоже)


Избегайте использования слов, которые обычно зарезервированы в языках программирования, в качестве имен столбцов (например, DateTime)

1 голос
/ 15 марта 2020

Вам даже не нужен подзапрос:

SELECT Task, DateTime FROM TableMain 
UNION ALL 
SELECT Task, DateTime FROM TableRoutine
order by DateTime 

Демо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...