2015-07-27 2 views
0

У меня есть таблица table1 с колоннами:Объединение двух подзапросов, которые были созданы из той же таблицы

key, person, date, type, trait1, trait2, trait3, trait4, trait 5 

Теперь сказать, что я создать две временные таблицы из TABLE1:

create temp1 as 
select key, person, date, trait1, trait2 
from TABLE1 
where trait1=trait2 

create temp2 as 
select key, person, type, trait3, trait4 
from TABLE1 
where type='A' and trait3=trait4 

Если бы я тогда соединить таблицы следующим образом:

create table TABLE2 as 
select A.key, A.person, A.date, B.type, A.trait1, A.trait2, B.trait3, B.trait4 
from temp1 A, temp2 B 
where A.key = B.key and A.person=B.person 

ли я получить тот же результат, как если бы я создать таблицу 2 из исходного TABLE1 Лик e это:

create table TABLE2 as 
select key, person, date, type, trait1, trait2, trait3, trait4 
from TABLE 1 
where trait1=trait2 and type='A' and trait3=trait4 

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

+3

Что произошло, когда вы попробовали? –

+0

Определяет ли 'person' /' key' каждую строку? –

+0

В любом случае это было бы необязательно. Вы можете присоединиться к таблице для себя, поэтому устраняете необходимость дублирования данных. – Dane

ответ

1

Если key/person однозначно определить каждую строку, то результаты будут действительно очень близкими. Соединение будет сочетать строку, которая соответствует первому условию с самим собой, но только если она соответствует второму условию.

Когда они будут отличаться? Это было бы тогда, когда условие A.key = B.key and A.person = B.person не получило соответствующую строку. Это произойдет, когда key или person были NULL.

Конечно, если key/person сделать не однозначно идентифицировать данную строку, то тривиальное, что оба метода различны.