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

Вот как.

SQL Fiddle

Разъяснения:

  • в 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  | Валерий  | Тойота |
+---------+----------+--------+
→ Ссылка