Oracle SQL создает дублирующиеся строки с объединением - PullRequest
1 голос
/ 29 сентября 2011

Я хотел бы создать дублированные строки в качестве выходных данных: сначала я хотел бы получить строку, а затем эту же строку снова объединить с другой таблицей, например:

table A with fieldA (and lots of others)

table B with fieldB (and lots of others)

и вывод:

fieldA1          (and all the fileds from tableA)      
fieldA1 fieldB1  (and all the fields from tableA and tableB joined) 
filedA1 fieldB2  
fieldA2 
fieldA2 fieldB8   
filedA2 fieldB9   
. . .

Я думал об использовании объединения, но тогда мне пришлось бы продублировать очень сложный выбор tableA, чтобы получить строки tableA и tableB (tableA - это объединение других таблиц, я просто упростил его для вопроса). Есть ли «более чистое» решение для этого? Я знаю, что это необычный вопрос, поэтому я бы оценил любые мысли или идеи.

Заранее большое спасибо!

Ответы [ 2 ]

3 голосов
/ 29 сентября 2011

Измените ответ Бенуа, чтобы использовать общее табличное выражение:

WITH A as (
 your select for "A"
)
SELECT A.fieldA, B.fieldB, A.*, B.*
  FROM A LEFT JOIN B ON 1 = 0
UNION ALL
SELECT A.fieldA, B.fieldB, A.*, B.*
  FROM A JOIN B ON (join condition)
1 голос
/ 29 сентября 2011

Использование:

SELECT A.*, B.*
  FROM A LEFT JOIN B ON 1 = 0
 UNION ALL
SELECT A.*, B.*
  FROM A INNER JOIN B ON (join condition)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...