Как запросить несколько таблиц в MySQL?

У меня есть 2 таблицы, и я хочу получить строки из них, отсортированные по дате создания для каждой строки.

Например, у меня есть t1 и t2, а схема таблиц такая:

----------------------
        t1    
----------------------
  id  | title | skill 
----------------------
  1   | T_1   | S_1
----------------------
  2   | T_2   | S_2
----------------------
  3   | T_3   | S_3
----------------------

----------------------
        t2    
----------------------
  id  | title | option 
----------------------
  1   | TT_1  | O_1
----------------------
  2   | TT_2  | O_2
----------------------
  3   | TT_3  | O_3
----------------------

Я хочу получить примерно такой результат:

----------------------------------
            t1_t2
----------------------------------
tmp_id| title | option  |  skill
----------------------------------
  1   | TT_1  | O_1     |  
----------------------------------
  2   | T_2   |         |  S_2
----------------------------------
  3   | TT_3  | O_2     |  
----------------------------------
  4   | T_1   |         |  S_1
----------------------------------
  5   | TT_2  | O_3     |  
----------------------------------
  6   | T_3   |         |  S_3
----------------------------------

Между t1 и t2` нет никакой связи, есть только отдельные таблицы.

Это возможно? Если да, то как я могу это сделать?

«У меня есть 3 таблицы, и я хочу получить строки из обеих, отсортированных по дате создания», так зачем показывать только 2 таблицы, ни одна из которых не имеет времени создания даты?

P.Salmon 15.12.2018 12:03

используя union, вы можете сделать это select * from (UNION of T1 and T2) order by date desc;

axcl 15.12.2018 12:05

@ P.Salmon, мне очень жаль. Это была типографская ошибка!

Behnam Azimi 15.12.2018 12:05
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
В предыдущем посте мы создали функциональность вставки и чтения для нашей динамической СУБД. В этом посте мы собираемся реализовать функции обновления...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Роли и разрешения пользователей без пакета Laravel 9
Роли и разрешения пользователей без пакета Laravel 9
Этот пост изначально был опубликован на techsolutionstuff.com .
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
0
3
31
1

Ответы 1

Вы можете просто объединить свои таблицы вместе и сгенерировать идентификатор строки на основе правой большей части этого title, разделенного подчеркиванием или любым другим упорядочением, которое здесь имеет смысл (не совсем следуя порядку ваших желаемых результатов теперь, когда я внимательно смотрю на это):

Set @rn:=0;
SELECT @rn:=@rn+1 as tmp_id, title, option, skill
(
    SELECT title, CAST(NULL as VARCHAR(3)) as option, skill FROM t1
    UNION ALL
    SELECT title, option, NULL FROM t2

) subunion
ORDER BY SUBSTRING_INDEX(title, '_', -1);

Другие вопросы по теме