14/05/2010

Consulta MySQL

Aqui está uma coisa que me passou despercebido por um longo tempo.

Em uma consulta aonde eu preciso consultar 2 valores diferentes em uma mesma tabela, sempre recorria a uma sub consulta (SELECT dentro de SELECT). Até que, acidentalmente, descobri que era muito mais simples, e estava sempre ali na minha cara.

Para ilustrar a idéia vamos montar uma situação fictícia:

Em uma empresa altamente setorizada você tem um diretor e um vice diretor para cada setor, entre tanto, ambos são funcionários e estão cadastrados na mesma tabela Pessoas. E uma tabela de setores só contem o ID de cada um e é necessário exibir o nome dos 2 indivíduos em uma lista.

Ex. com sub consulta.



SELECT un.id,
f1.nome AS diretor,
(SELECT nome FROM pessoas WHERE id = un.pessoa) AS vice
FROM unidades AS un
LEFT JOIN pessoas AS f1 ON f1.id = un.pessoa

E a consulta como devia ser:

SELECT un.id,
f1.nome diretor,
f2.nome vice
FROM unidades AS un
LEFT JOIN pessoas f1 ON f1.id = un.pessoa
LEFT JOIN pessoas f2 ON f2.id = un.diretor

Não entrando em questão de performance (que deve levar alguns mili segundos de vantagem), a segunda é bem mais "limpa"

Simples! não é?



Um comentário:

  1. mt bom esse tipo de consulta,
    apesar de eu já ter aprendido de primeira
    a melhor maneira, esse tipo de consulta
    ajuda mt a filtrar bastante informação e buscar
    mais coisas de uma vez só sem ter que
    buscar mais outras informações inuteis.

    ResponderExcluir

Escreva à-vontade. mas dê prioridade ao idioma Português, e lembre-se, aqui não é o MSN, ICQ, etc. mais de uma pessoa vai ler, então tente escrever a palavra toda.
E a propósito.
Os comentários estão sem moderação. Caso sua TESTOSTERONA ou TPM esteja em níveis elevados, lembre-se que crianças visitam esse blog. ;)