O que acontece se eu especificar campos de junção inexistentes para um ou ambos os arquivos de entrada?

0

Eu tenho dois arquivos

$ cat file1
c c1
b b1
$ cat file2
a a2
c c2
b b2

O que acontece se eu especificar campos de junção inexistentes para um ou ambos os arquivos de entrada?

Por que as seguintes junções externas geram as saídas? Concorda com as junções externas na álgebra relacional? (SQL não permite especificar campos de junção inexistentes)

Obrigado.

$ join -a 1 -a 2 -o auto -t " " -e NULL  -1 1 -2 5 <(sort file1) <(sort file2)
NULL NULL a a2
NULL NULL b b2
NULL NULL c c2
b b1 NULL NULL
c c1 NULL NULL

$ join -a 1 -a 2 -o auto -t " " -e NULL  -1 5 -2 1 <(sort file1) <(sort file2)
NULL b b1 NULL
NULL c c1 NULL
a NULL NULL a2
b NULL NULL b2
c NULL NULL c2

$ join -a 1 -a 2 -o auto -t " " -e NULL  -1 5 -2 5 <(sort file1) <(sort file2)
NULL b b1 a a2
NULL b b1 b b2
NULL b b1 c c2
NULL c c1 a a2
NULL c c1 b b2
NULL c c1 c c2

Originado de O que significa 'join -e'?

    
por Tim 25.07.2018 / 14:31

1 resposta

0

NULL e NULL são iguais, portanto, a junção externa no terceiro exemplo é igual à junção interna.

NULL e um valor não-NULL não são iguais, portanto, as junções externas nos dois primeiros exemplos não contêm nenhum registro de junções internas, porque as junções internas estão vazias.

    
por 25.07.2018 / 22:06