Как добавить поля из таблицы в результат SELECT, чтобы создать новое представление? - PullRequest
1 голос
/ 24 сентября 2019

У меня есть 2 таблицы: p07TABLE и p07TABLE_02.Их структура показана ниже.

CREATE TABLE IF NOT EXISTS p07TABLE (
    id int NOT NULL AUTO_INCREMENT,
    dev_id varchar(20) NOT NULL,
    b_level varchar(10) NOT NULL,
    trig varchar(5) NOT NULL,
    t_stamp datetime DEFAULT CURRENT_TIMESTAMP,
    a_sent varchar(5) NOT NULL,
    a_stamp datetime DEFAULT CURRENT_TIMESTAMP,
    PRIMARY KEY (id)
);

CREATE TABLE IF NOT EXISTS p07TABLE_02 (
    id int NOT NULL AUTO_INCREMENT,
    dev_id varchar(20) NOT NULL,
    dev_location varchar(50) NOT NULL,
    t_channel varchar(50) NOT NULL,    
    PRIMARY KEY (id)
);

Обратите внимание, dev_id используется в качестве ключа для связи двух таблиц.

Я использую SQL ниже, чтобы найти последнюю запись для каждого dev_idв p07TABLE, и он работает, как и ожидалось.

SELECT * FROM p07TABLE WHERE id IN (SELECT MAX(id) FROM p07TABLE GROUP by dev_id);

Может ли кто-нибудь поделиться какой-то идеей о том, как создать представление, добавив dev_location и t_channel из p07TABLE_02 к результату, созданному вышеупомянутым SQL?Спасибо !!

Ответы [ 2 ]

1 голос
/ 24 сентября 2019

Вы можете попробовать ниже -

create view t_viewname as
  SELECT a.*,dev_location,t_channel
  FROM p07TABLE a inner join p07TABLE_02 b on a.dev_id=b.dev_id
  WHERE a.id IN (SELECT MAX(id) FROM p07TABLE a1 where a.dev_id=a1.dev_id)
0 голосов
/ 24 сентября 2019
create view view_name as
select * from     
(
SELECT t1.*,t2.dev_location,t2.t_channel,
row_number() over(partition by t1.dev_id order by t1.id desc) rn
  FROM p07TABLE
t1 join p07TABLE_02 t2 on t1.dev_id=t2.dev_id
 ) a where a.rn=1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...