Como criar e usar joins e unions SQL no Jitterbit App Builder
Ao criar Objetos de Negócio na Camada de Lógica de Negócio, muitas vezes é necessário consultar duas tabelas separadas para exibir dados de ambas. Com o App Builder, você pode configurar um tipo de Join para combinar colunas de uma ou mais tabelas, ou Objetos de Negócio, para criar um novo Objeto de Negócio. Este artigo irá guiá-lo através dos quatro tipos de Joins SQL suportados no App Builder - Inner, Left Outer, Cross e Right Outer - e fornecer exemplos de como criá-los e usá-los no App Builder. Além disso, também daremos uma olhada em outro tipo de relacionamento chamado Union que está disponível para configuração sob Joins no App Builder.
- Inner - O tipo Inner Join retorna linhas que existem em cada tabela
- Cross - O Cross Join produz um Produto Cartesiano
- Left Outer - Um Left Outer Join retorna todas as linhas da tabela esquerda especificada, independentemente de uma correspondência na tabela direita
- Right Outer - Um Right Outer retorna todas as linhas da tabela direita especificada, independentemente de uma correspondência na tabela esquerda
- Union - Combina o conjunto de resultados de duas ou mais instruções SELECT
Inner join
O que é um inner join?
Inner Joins são os Joins mais frequentemente usados. Quando dadas duas tabelas, o conjunto de resultados de um Inner Join contém apenas as linhas entre as duas tabelas que são iguais, com base nas colunas de Join.
Exemplo
Vamos supor que queremos um Objeto de Negócio de clientes que fizeram um pedido e os detalhes do pedido realizado. Este seria um ótimo caso de uso para um Inner Join, porque um Inner Join pode retornar registros na interseção de duas tabelas. Nosso conjunto resultante deve incluir cada CustomerID
que possui um OrderID
. Abaixo estão as duas tabelas Customer
e Order
que estaremos unindo.
Antes de criar seu Inner Join, você precisa fazer um Objeto de Negócio. O nosso se chama Customer (with Order)
. Traga as duas tabelas para o painel de Tabelas. Implemente o Inner Join entre Customer
e Order
. A coluna de Junção aqui é CustomerID
, que é a única coluna entre as duas que é igual.
O conjunto de resultados deve ser dos Clientes que fizeram Pedidos. Neste caso, nossos dados resultaram em uma linha:
Cross join
O que é um cross join?
Um Cross Join produz um conjunto de resultados que é o número de linhas x na primeira tabela multiplicado pelo número de linhas y na segunda tabela. O conjunto de resultados terá x * y linhas.
Ao tentar decidir o que faz sentido com um Cross Join, ajuda dizer que o conjunto resultante terá colunas da tabela 1 para cada coluna na tabela 2.
Exemplo
Temos duas tabelas, Category
e Supplier
. Sabemos que cada Supplier
gostaria de cada Category
, então precisamos fazer um Objeto de Negócio que combine essas duas tabelas. Gostaríamos de um conjunto resultante que tenha uma Category
para cada Supplier
. Este é um exemplo perfeito de quando usar um Cross Join.
Abaixo estão registros de exemplo para as tabelas Category
e Supplier
:
Para fazer o Cross Join dessas duas tabelas, precisamos criar um novo Objeto de Negócio. Chamamos o nosso de Supplier (and Categories)
. Traga as duas tabelas que gostaríamos de Cross Join para o painel de Tabelas. No painel de Joins, indique que você gostaria de um Cross Join entre as duas tabelas.
Nota
Não precisamos indicar colunas de Junção porque, com o Cross Join, as duas tabelas não precisam ter colunas em comum para se juntar. Ainda podemos obter uma Category
para cada Supplier
.
Após implementar esta Junção, veremos resultados como este. Observe que há uma Category
para cada Supplier
:
Left outer join
What is a left outer join?
Um Left Outer Join busca todas as linhas correspondentes de duas tabelas (a interna entre as duas) mais linhas que não correspondem a nenhuma linha na segunda tabela. Isso é útil quando você deseja todos os resultados comuns entre duas tabelas, mas também deseja os valores nulos na tabela da esquerda.
Example
Você pode querer uma lista de todos os clientes, independentemente de terem feito um pedido ou não. Nesse caso, um Left Outer Join seria perfeito. Este exemplo é semelhante ao exemplo anterior de Inner Join, exceto que neste caso também queremos ver resultados onde há um CustomerID
listado sem um OrderID
.
Abaixo estão as tabelas que estamos usando: Customer
e Order
. Elas são as mesmas tabelas que usamos para o exemplo de um Inner Join.
Esta declaração de Objeto de Negócio é muito semelhante à do objeto de negócio do exemplo de Inner Join. A única diferença é o nome e a declaração desta junção como Left Outer em vez de Inner Join.
Os resultados nos dão os mesmos resultados que o Inner Join nos deu, além das linhas na tabela Customer
que não correspondem a nenhuma linha na tabela Order
.
Desta vez, há 92 resultados.
Right outer
O que é um right outer join?
O terceiro join é um Right Outer Join, que é apenas o oposto de um Left Outer. Usar um ou outro geralmente não importa, pois você pode sempre mudar uma tabela do lado esquerdo para o lado direito do join e isso alcança o mesmo efeito. Os resultados variarão dependendo de qual join você escolher e da ordem das tabelas adicionadas ao painel de Joins.
Exemplo
Como um exemplo de querer mudar de um Left Outer Join para um Right Outer Join, você pode querer visualizar todos os seus Clientes com ou sem Pedidos, assim como todos os Detalhes do Pedido com ou sem Pedidos ou Produtos. A declaração abaixo é uma maneira de configurar essa lógica.
Quando executamos os resultados, ou visualizamos os resultados da grade rápida, vemos os seguintes registros retornados:
Union
O que é uma união?
No App Builder, Union Joins produzem uma combinação de duas instruções select que visam a mesma Coluna. Um Union Join combina os resultados de duas Colunas diferentes (que têm o mesmo nome) de duas Tabelas diferentes em uma única Coluna unificada. Enquanto a maioria dos Joins utiliza uma coluna de Join, o Union Join não o faz. Isso ocorre porque outros Joins requerem um contexto compartilhado entre as duas tabelas para funcionar, mas um Union Join requer apenas colunas compartilhadas.
Exemplo 1
Por exemplo, um Inner Join entre as tabelas Product
e Supplier
mostraria cada produto junto com seu fornecedor, enquanto um Union Join entre as tabelas Product
e Supplier
mostraria uma lista de todos os diferentes campos SupplierID
. Isso ocorre porque o Union Join essencialmente mostra todos os resultados da mesma coluna em duas tabelas diferentes, e essas duas tabelas compartilham apenas o SupplierID
. Lembre-se de que, com Joins, compartilhar contexto e ter a mesma coluna são dois critérios diferentes.
Abaixo estão as duas tabelas Supplier e Product.
Agora você pode criar seu Objeto de Negócio que usará o Union Join. Chamamos o nosso de Supplier (Union with Product)
. Traga as tabelas que você usará para o painel de Tabelas. Declare um Union entre as duas tabelas no painel de Joins. Novamente, este Join não requer Join Column. O painel de Colunas só nos permite adicionar SupplierID
como uma coluna porque é a única coluna que as duas tabelas têm em comum.
O conjunto de resultados contém todos os SupplierID
, incluindo registros duplicados se o SupplierID
aparecer em ambas as tabelas.
Exemplo 2
Outro caso de uso para um Union é se um cliente pedir para você encontrar todos os respondentes, mas os usuários podem responder de várias maneiras. Vamos supor que um usuário possa responder por email, que é inserido em uma tabela chamada EmailRespondants
, mas eles também podem responder por meio de uma ligação telefônica usando a tabela PhoneRespondant
. Você poderia unir as tabelas para encontrar as colunas que têm em comum, que poderiam ser RespondantID
e RespondType
, para receber uma lista de todas as pessoas que responderam e como responderam. Dessa forma, você também pode ver o mesmo RespondantID
várias vezes, mas poderá ver como eles responderam a cada vez.