Gerencie suas informações através de instruções SQL com selects turbinados (para leigos e experts)

Para programadores e DBAs pode não ser muita novidade, mas certamente é uma reflexão de que a gestão da informação não seria a mesma sem ele. E para o usuário menos experiente a mensagem é de que SQL não é coisa de outro mundo e pode fazer parte e facilitar sua vida.

[ Hits: 21.812 ]

Por: Perfil removido em 09/04/2010


Só mais uma e vamos concluir



Bem, pra finalizar não posso deixar de falar de outro recurso do select que é realmente uma mão na roda: o union. Ele serve pra trazer os resultados da seleção de duas tabelas diferentes, uma em baixo da outra, numa mesma listagem.

Assim, digamos que temos uma tabela de clientes e outra de fornecedores, ambas com uma estrutura parecida, então queremos listar juntos todos os clientes e fornecedores cadastrados: uma alternativa e dar um select na primeira tabela e no código das classes lá da sua aplicação armazenar em memória preenchendo um recordset ou uma coleção própria com os resultados, depois fazer outro select na outra tabela e complementar nossos registros em memória com estes dados. Ou então selecionamos as duas juntas, unindo os dois selects numa única instrução SQL que resultará uma listagem com os resultados das duas tabelas em um bloco só.

select
  CODFORNECEDOR as CODIGO,
  coalesce(RAZAOSOCIAL, FANTASIA) as NOMEEXIBICAO,
  CIDADE,
  UF,
  TELEFONE,
  'FORNECEDOR' as TIPO
from
  FORNECEDORES

union

select
  CODCLIENTE as CODIGO,
  coalesce(NOME, APELIDO) as NOMEEXIBICAO,
  CIDADE,
  UF,
  TELEFONE,
  'CLIENTE' as TIPO
from
  CLIENTES
order by
  4, 3, 2

O union é que faz a mágica. Veja que nos dois selects retornamos os mesmos campos na mesma ordem e usamos aliases para os campos que têm nomes diferentes. Aparece aí também o coalesce, que na verdade pode ser usado em qualquer select, eu só aproveitei o contexto: ele serve pra trazer em um campo virtual o primeiro resultado não-nulo por ordem em uma lista de campos (no nosso caso, se o cliente tem nome usa, senão usa o apelido pra exibir como nome, e com os fornecedores faz o mesmo comparando nome fantasia e razão social).

Forçamos um valor também como campo virtual pra diferenciar o tipo entre CLIENTE e FORNECEDOR. Por fim ordenamos usando os números dos campos conforme suas posições no select pois os nomes deles são diferentes (o order by e um único pra todo o bloco).
Linux: Gerencie suas informações através de instruções SQL com selects turbinados (para leigos e experts)

Conclusão

Os exemplos mostrados não são assim tão especiais e tampouco representam o que há de mais avançado, mas servem bem pra demonstrar o que eu falei sobre simplicidade aliada à riqueza de recursos, recursos estes que pra mim foram muito úteis depois de tê-los descoberto, principalmente por fornecerem alternativas que eu sempre pensei que deveriam existir e que, pra minha alegria, é claro que já existiam, e que sem eles as coisas seriam muito mais difíceis, como era no passado.

Enfim, meu objetivo foi falar de forma muito mais subjetiva do que fazer uma exposição técnico-histórica detalhada. Isso é só o começo, o SQL pode ser considerado uma das coisas que levou os banco de dados ao caminho de evolução constante em que hoje se encontram, colocando complexidade e praticidade lado a lado de forma muito equilibrada, valorizando o potencial e principalmente a criatividade de quem usa essas ferramentas em sue dia-a-dia.

Bem, e se você tem alguma coisa a contribuir, alguma consideração a fazer ou alguma coisa que aprendeu com SQL que acredita ser um recurso indispensável, principalmente se for aliado à simplicidade, o espaço dos comentários está aqui pra isso.

Até a próxima.

Original meu em: http://www.pedro-araujo.com/

Página anterior    

Páginas do artigo
   1. Do dBASE ao Firebird
   2. "Isso é simples, é só fazer um select"
   3. Só mais uma e vamos concluir
Outros artigos deste autor

Quem disse que micro velho não presta?

Kernel 2.6.9 em 20 passos

USB-ZIP - Emulando Zip Drive em Pendrive

Criando um servidor de impressão para residências e pequenas empresas com Linux

Xen - xl.conf - Configuração do Host

Leitura recomendada

Injeção de SQL

Como criar VIEWS no MySQL

Informix: Instalação - Configuração - Conceito

OpenAI - Como usar uma Inteligência Artificial a seu favor

Implementação LDAP e Java

  
Comentários
[1] Comentário enviado por dastyler em 14/04/2010 - 11:30h

Apesar da minha humilde pessoa já conhecer SQL e estar até meio "enjoado " de trabalhar com a mesma (apesar que me ajuda muuuuitissimo até hoje), o artigo ficou muito bom.
Serve até como um guia de referencia para quando esquecer alguma regra...heheheheh!

abraço!



[2] Comentário enviado por grandmaster em 03/05/2010 - 17:14h

Exato dastyler, server como um guia.

Ficou realmente muito didático, pelo menos para mim que já tenho alguma noção.

--
Renato de Castro Henriques
ITILv3 Foundation Certified
CobiT Foundation 4.1 Certified ID: 90391725
http://www.renato.henriques.nom.br


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts