Как сделать запрос на несколько таблиц в MySQL? - PullRequest
0 голосов
/ 15 декабря 2018

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

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

----------------------
        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`, и существуют только отдельные таблицы.

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

1 Ответ

0 голосов
/ 15 декабря 2018

Вы можете просто объединить ваши таблицы и сгенерировать идентификатор строки, основанный на самой правой части этого 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);
...