Mysql - Создать представление объединены 2 таблицы, но объединены только путем выбора без таблиц слияния - PullRequest
0 голосов
/ 05 мая 2018

В MySQL у меня есть 2 таблицы с именами table_rebate и table_bonus

table_rebate (имеет 3 одинаковых столбца, 2 разных столбца)

a_id     a_value           a_time
 1        1000      2018-05-05 10:25:15
 2        3000      2018-05-05 11:35:15

table_bonus (имеет 3 одинаковых столбца, 3 разных столбца)

b_id     b_value           b_time      
 01        500       2018-05-05 11:20:15
 02        700       2018-05-05 12:30:15

Мне нужно выбрать те же 3 столбца в 1 таблице для моих представлений PHP (CI).

Number    from       Values            Time
  1      Rebate       1000      2018-05-05 10:25:15
  2      Bonus         500      2018-05-05 11:20:15
  3      Bonus         700      2018-05-05 11:35:15
  4      Rebate       3000      2018-05-05 12:30:15

Как я могу это сделать? Он не должен быть объединен, но должен печататься как объединенная таблица и может быть отсортирован по возрастанию (a_time & b_time).

EXPLAIN select (@rn := @rn + 1) as id, `from`, `values`, `time`
from ((select 'rebate' as `from`, a_value as `values`, a_time as `time`
       from table_rebate
      ) union all
      (select 'bonus' as `from`, b_value, b_time
       from table_bonus
      ) 
     ) br cross join
     (select @rn := 0) params
order by `time`;

enter image description here

1 Ответ

0 голосов
/ 05 мая 2018

Вы можете использовать union all:

select (@rn := @rn + 1) as id, `from`, `values`, `time`
from ((select 'rebate' as `from`, a_value as `values`, a_time as `time`
       from table_rebate
      ) union all
      (select 'bonus' as `from`, b_value, b_time
       from table_bonus
      ) 
     ) br cross join
     (select @rn := 0) params
order by `time`;

Обратите внимание, что from, values и time являются ключевыми словами в SQL (даже если они не зарезервированы). Это делает их очень плохими именами для столбцов.

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