insert и select
Первая таблица "peoples"
id|name
1|Алексей
2|Борис
3|Валерий
Вторая таблица "cars"
id|brand
1|Ауди
2|Тойота
В третьей таблице "peoples_cars" необходимо получить
id|name|brand
1|Алексей|Ауди
2|Алексей|Тойота
3|Борис|Ауди
4|Борис|Тойота
5|Валерий|Ауди
6|Валерий|Тойота
Как сделать insert в третью таблицу с 2 select-ами чтобы получить то что мне нужно?
Ответы (1 шт):
Автор решения: Yitzhak Khabinsky
→ Ссылка
Вот как.
Разъяснения:
в ROW_NUMBER () OVER (ORDER BY ...) ORDER BY является обязательным. Неясно, какой порядок сортировки требуется. Вот почему я использовал NULL.
AS используется как псевдоним. Это не обязательно.
SQL
CREATE TABLE people (id INT, fname NVARCHAR(30));
INSERT INTO people (id, fname) VALUES
(1, 'Алексей'),
(2, 'Борис'),
(3, 'Валерий');
CREATE TABLE cars (id INT, brand NVARCHAR(30));
INSERT INTO cars (id, brand) VALUES
(1, 'Ауди'),
(2, 'Тойота');
select ROW_NUMBER () OVER (
ORDER BY NULL
) RowNum
, fname, brand
from people CROSS JOIN cars;
Результат
+---------+----------+--------+
| RowNum | fname | brand |
+---------+----------+--------+
| 1 | Алексей | Ауди |
| 2 | Алексей | Тойота |
| 3 | Борис | Ауди |
| 4 | Борис | Тойота |
| 5 | Валерий | Ауди |
| 6 | Валерий | Тойота |
+---------+----------+--------+