Ir para o conteúdo

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.

Innerdiagram

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.

Customertable

A ordertable

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.

join1.png

Innercolumnstab

Innerjoinstab

O conjunto de resultados deve ser dos Clientes que fizeram Pedidos. Neste caso, nossos dados resultaram em uma linha:

Innerresults

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.

Crossdiagram

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:

Categoryrecords

A supplierrecords

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.

join2.png

A crosscolumns

A crossjoins

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:

Crossresults

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.

A leftouterdiagram

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.

Customertable

A ordertable

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.

join3.png

Innercolumnstab

A lo joins

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.

A lo results

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.

A ro diagram

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.

join4.png

A ro columns

A ro joins

Quando executamos os resultados, ou visualizamos os resultados da grade rápida, vemos os seguintes registros retornados:

A ro results

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.

A supplier results

A product results

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.

join5.png

A union columns

A union joins

O conjunto de resultados contém todos os SupplierID, incluindo registros duplicados se o SupplierID aparecer em ambas as tabelas.

A union results

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.