как определение: декартово произведение двух множеств - это множество всех возможных пар этих множеств, поэтому {A, B} x {a, b} = {(A, a), (A, b), (B, a), (B, b)}.
Теперь я хочу вставить такое декартово произведение в таблицу базы данных (каждая пара в виде строки).Он предназначен для заполнения таблицы значениями по умолчанию для каждой пары, поэтому в данный момент в базе данных нет данных, то есть двух наборов.
Есть идеи, как этого добиться с помощью postgresql?
РЕДАКТИРОВАТЬ:
С помощью ответа Гжегожа Шпетковского я смог создать запрос, который выполняет то, что я хочу достичь, но на самом деле это не самый красивый.Предположим, я хочу вставить декартово произведение множеств {1,2,3} и {'A', 'B', 'C'}.
INSERT INTO "Test"
SELECT * FROM
(SELECT 1 UNION SELECT 2 UNION SELECT 3) P
CROSS JOIN
(SELECT 'A' UNION SELECT 'B' UNION SELECT 'C') Q
Есть ли лучший способ сделать это?
РЕДАКТИРОВАТЬ2: Принятый ответ в порядке, но я нашел другую версию, которая может быть подходящей, если она становится более сложной:
CREATE TEMP TABLE "Numbers" (ID integer) ON COMMIT DROP;
CREATE TEMP TABLE "Chars" (Char character varying) ON COMMIT DROP;
INSERT INTO "Numbers" (ID) VALUES (1),(2),(3);
INSERT INTO "Chars" (Char) VALUES ('A'),('B'),('C');
INSERT INTO "Test"
SELECT * FROM
"Numbers"
CROSS JOIN
"Chars";