SQL вставляет все данные в таблицу мостов, (многие ко многим) - PullRequest
0 голосов
/ 17 декабря 2018

У меня есть две таблицы, как показано ниже;

X стол;

+---+----------+
| id| value    |
+---+----------+
| 1 | x value1 |
+---+----------+
| 2 | x value2 |
+---+----------+
| 3 | x value3 |
+---+----------+

Y стол;

+---+----------+
| id| value    |
+---+----------+
| 1 | y value1 |
+---+----------+
| 2 | y value2 |
+---+----------+
| 3 | y value3 |
+---+----------+

И я создал новую таблицу (таблица x_y), которая имеет внешние ключи для таблиц x и y;

И я хочу добавить все данные, связанные друг с другом, в новую таблицу, как показано ниже;x_y table

+----+------+------+
| id | x_id | y_id |
+----+------+------+
| 1  | 1    | 1    |
+----+------+------+
| 2  | 1    | 2    |
+----+------+------+
| 3  | 1    | 3    |
+----+------+------+
| 4  | 2    | 1    |
+----+------+------+
| 5  | 2    | 2    |
+----+------+------+
| 6  | 2    | 3    |
+----+------+------+
| 7  | 3    | 1    |
+----+------+------+
| 8  | 3    | 2    |
+----+------+------+
| 9  | 3    | 3    |
+----+------+------+

как добавить это значение в третью таблицу в сценарии postgresql.

Ответы [ 2 ]

0 голосов
/ 17 декабря 2018

Предположительно, новая таблица определена с id как последовательный столбец.Если это так, вы должны вставить данные, выполнив:

insert into x_y (x_id, y_id)
    select x.id, y.id
    from x cross join
         y
    order by x.id, y.id;
0 голосов
/ 17 декабря 2018

Это можно сделать с помощью cross join и row_number, генерирующих идентификаторы.

select row_number() over(order by x.id,y.id) as id,x.id as x_id,y.id as y_id
from x
cross join y
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...