Translate

domingo, 11 de dezembro de 2011

Oracle - Cruzando dados com SQL

Uma das utilidades principais do SQL é sua capacidade de cruzar grandes volumes de dados de duas ou mais fontes. Sem o SQL, este trabalho seria árduo para analistas e desenvolvedores porque teriam preocupações como realizar varreduras registro-por-registro.

Como exemplo, vamos usar duas tabelas consideradas como fontes de dados:

       GRUPO_A - Com a coluna chamada ELEMENTO do tipo numérico
       GRUPO_B - Também com uma coluna chamada ELEMENTO do tipo numérico

A partir destas tabelas, é possível realizar os seguintes relacionamentos:

1) Procurar elementos comuns as tabelas GRUPO_A e GRUPO_B:

       SELECT
         GRUPO_A.ELEMENTO
       FROM
         GRUPO_A
         , GRUPO_B
       WHERE
         GRUPO_A.ELEMENTO = GRUPO_B.ELEMENTO

       Nota: Os registros comuns aos grupos A e B são buscados pela cláusula WHERE com o uso do operador de igualdade "=".

2) Procurar elementos que existem apenas no GRUPO_A:

       SELECT
         GRUPO_A.ELEMENTO
       FROM
         GRUPO_A
         , GRUPO_B
       WHERE
         GRUPO_A.ELEMENTO = GRUPO_B.ELEMENTO (+)
         AND GRUPO_B.ELEMENTO IS NULL

       Nota: Os registros apenas existentes no grupo A são buscados pela cláusula WHERE com o uso do operador de igualdade "=", com "(+)" para trazer tudo de A e de B apenas quando encontrar e o filtro "IS NULL" aplicado na coluna elemento de B para mostrar tudo de A sem correspondente em B.

3) Procurar elementos que existem apenas no GRUPO_B:

       SELECT
         GRUPO_B.ELEMENTO
       FROM
         GRUPO_B
         , GRUPO_A
       WHERE
         GRUPO_B.ELEMENTO = GRUPO_A.ELEMENTO (+)
         AND GRUPO_A.ELEMENTO IS NULL

       Nota: Os registros apenas existentes no grupo B são buscados pela cláusula WHERE com o uso do operador de igualdade "="; mais o uso de "(+)" para trazer tudo de B e de A apenas quando encontrar; e o filtro "IS NULL" aplicado na coluna elemento de A para mostrar tudo de B sem correspondente em A.

Existem outras alternativas para relacionar dados com o SQL, mas todas estas requerem um pouco mais de escrita. Caso tenha curiosidade, procure saber mais sobre INNER JOIN, LEFT JOIN e RIGHT JOIN, EXISTS e NOT EXISTS como palavras do SQL.

Nenhum comentário:

Postar um comentário