Я делаю UNION между 3 таблицами. Чтобы поставить вас на изображение, одна таблица рассматривается как основная таблица, а две другие таблицы рассматриваются как подтаблицы. У двух подкатегорий всегда одинаковое количество записей для каждого случая. Поэтому я хотел сделать объединение между этими тремя таблицами, в этом объединении я хотел бы повторить информацию в столбце, взятом в основной таблице, и перечислить информацию в виде двух подклассов, где каждая строка в подкатегории 1 соответствует строке в подкатегории 2. Я не могу поместить реальный код по профессиональным причинам, так что вот простой пример, соответствующий моему реальному делу. Рассмотрим таблицу под названием Author (Author_ID, Author_FirstName, Author_LastName). Эта таблица будет нашей главной таблицей. Затем рассмотрим таблицу под названием «Адреса» (Adress_ID, Street_Coord, Author_ID), это будет наша подкатегория 1. Затем рассмотрим таблицу с названием «Города» (City_ID, City_Name, Author_ID). Наш автор X имеет 2 адреса в 2 городах. Когда я выполняю свой запрос, я получаю результат R1, который полностью логичен, но я хочу изменить свой запрос, чтобы получить результат R2. Не могли бы вы помочь мне изменить мой запрос, чтобы получить результат R2?Оптимизация запроса sql-соединения
SQL запросов:
SELECT "Author"."Author_ID", "Author"."Author_FirstName", "Author.Author_LastName",
TO_CHAR(NULL) AS "Street_Coord", TO_CHAR(NULL) AS "City_Name"
FROM "Author"
WHERE "Author"."Author_ID"='X'
UNION
SELECT TO_NUMBER(NULL) AS "Author_ID", TO_CHAR(NULL) AS "Author_FirstName", TO_CHAR(NULL) AS "Author_LastName",
"Adresses"."Street_Coord", TO_CHAR(NULL) AS "City_Name"
FROM "Adresses"
WHERE "Adresses"."Author_ID"='X'
UNION
SELECT TO_NUMBER(NULL) AS "Author_ID", TO_CHAR(NULL) AS "Author_FirstName", TO_CHAR(NULL) AS "Author_LastName",
TO_CHAR(NULL) AS "Street_Coord", "Cities"."City_Name"
FROM "Cities"
WHERE "Cities"."Author_ID"='X'
Результат R1:
ID_AUTHOR | AUTHOR_FirstName | AUTHOR_LastName | Street_Coord | City_Name |
----------------------------------------------------------------------------------
X |James | Conor | NULL | NULL |
----------------------------------------------------------------------------------
X |NULL | NULL | 1245 rich st | NULL |
----------------------------------------------------------------------------------
X |NULL | NULL | 154 music st | NULL |
----------------------------------------------------------------------------------
X |NULL | NULL | NULL | Madrid |
----------------------------------------------------------------------------------
X |NULL | NULL | NULL | Barcelona |
----------------------------------------------------------------------------------
Результат R2: Я хочу, чтобы помочь получить этот результат, пожалуйста:
ID_AUTHOR | AUTHOR_FirstName | AUTHOR_LastName | Street_Coord | City_Name |
----------------------------------------------------------------------------------
X |James | Conor | 1245 rich st | Madrid |
----------------------------------------------------------------------------------
X |James | Conor | 154 music st | Barcelona |
----------------------------------------------------------------------------------
Большое спасибо, Walloud
Вы уверены, что не хотите ОБЪЕДИНЯТЬ вместо СОЮЗА? – eaolson
Hey eaolson, объединение 11 таблиц разбилось! ORA-01652: не удалось продлить временный сегмент на 128 в табличном пространстве TEMP 01652. 00000 - «невозможно продлить временный сегмент на% s в табличном пространстве% s» * Причина: Не удалось выделить объем необходимого количества блоков для - временной сегмент в указанном табличном пространстве. * Действие: Используйте инструкцию ALTER TABLESPACE ADD DATAFILE, чтобы добавить один или несколько файлов в указанное табличное пространство. – Walloud
Эта ошибка звучит так, как будто вам нужно расширить размер табличного пространства TEMP. http://stackoverflow.com/questions/11839576/ora-01652-unable-to-extend-temp-segment-by-in-tablespace – eaolson