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
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"
mt bom esse tipo de consulta,
ResponderExcluirapesar 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.