Присоединение без ключа - SQL - PullRequest
0 голосов
/ 25 февраля 2020

Пожалуйста, используйте код ниже, чтобы помочь понять мою ситуацию. По сути, у меня есть первые две таблицы, и я хочу создать table_3, но я не знаю, как, потому что их нечего объединять, я не думаю, что Союз - это лучший вызов .. поэтому я застрял:

CREATE TABLE IF NOT EXISTS `table_1` 
(
    `date` date NOT NULL,
    `first_name` varchar(200) NOT NULL,
    `last_name` varchar(200) NOT NULL,
    PRIMARY KEY (`date`)
);

INSERT INTO `table_1` (`date`, `first_name`, `last_name`) 
VALUES ('1-1-20', 'John', 'Charlie'),
       ('2-1-20', 'John', 'Jamie'),
       ('3-1-20', 'John', 'Stevie');


CREATE TABLE IF NOT EXISTS `table_2` 
(
    `date` date NOT NULL,
    `new_first_name` varchar(200) NOT NULL,
    `new_last_name` varchar(200) NOT NULL,
    PRIMARY KEY (`date`)
);

INSERT INTO `table_2` (`date`,`new_first_name`, `new_last_name`) 
VALUES ('4-1-20', 'John', 'Fidora'),
       ('5-1-20', 'John','Bowl'),
       ('6-1-20', 'Joe', 'berka');


 CREATE TABLE IF NOT EXISTS `table_3` 
(
    `date` date NOT NULL,
    `first_name` varchar(200) NOT NULL,
    `last_name` varchar(200) NOT NULL,
    `new_first_name` varchar(200) NOT NULL,
    `new_last_name` varchar(200) NOT NULL,
    PRIMARY KEY (`date`)
);       
  INSERT INTO `table_3` (`date`,`first_name`, `last_name`, `new_first_name`, `new_last_name`) 
VALUES ('1-1-20', 'John', 'Charlie', '',''),
       ('2-1-20', 'John', 'Jamie', '', ''),
       ('3-1-20', 'John', 'Stevie', '', ''),
       ('4-1-20', '', '', 'John', 'Fidora'),
       ('5-1-20', '', '', 'John', 'Bowl'),
       ('6-1-20', '', '', 'Joe', 'Berka');

С двумя таблицами выше, как я могу добраться до нужной третьей таблицы?

Ответы [ 2 ]

3 голосов
/ 25 февраля 2020

Вы, кажется, хотите запрос объединения здесь:

SELECT date, first_name, last_name, '' AS new_first_name, '' AS new_last_name FROM table_1
UNION ALL
SELECT date, '', '', new_first_name, new_last_name FROM table_2
ORDER BY date;
2 голосов
/ 25 февраля 2020

попробуйте это ...

 insert into table_3
 select
 nvl(t1.date,t2.date)
 t1.first_name,
 t1.last_name,
 t2.new_first_name,
 t2.new_last_name
 from 
 table_1 t1
 full outer join table_2  t2
 on t1.date = t2.date;
...