26 de março de 2010

Mysql GROUP_CONCAT

Tem situação que você se depara no serviço que nem sempre sabe como resolver, né?

Ao mesmo tempo, tem coisa que você descobre que salva o seu dia. Uma dessas, é a função GROUP_CONCAT() do MySQL.

Ela faz o seguinte: concatena o retorno de um result set, transformando-o em uma string.

Exemplo de situação que seria útil: trazer os nomes de todos os dependentes de um empregado:

SELECT e.nome, GROUP_CONCAT(d.nome) AS d.dependentes FROM empregado e, dependente d WHERE e.id = 123 AND d.id_empregado = e.id;

O que isso vai retornar? O nome do empregado na coluna e.nome e os nomes dos dependentes, separados por vírgula, na coluna d.dependentes.

Outras situações em que ele pode ser útil são:
* Retornar pares "chave = valor";
* Retornar conteúdos separados por vírgula para serem carregados diretamente em um array em PHP;

Dá uma lida no manual do MySQL e procure exemplos na internet. Tem muita coisa boa sobre o GROUP_CONCAT().

Usar firefox sem mouse

Eu já escrevi aqui muitas vezes sobre minha aversão ao mouse. Eu gosto mesmo é do teclado e recomendo que todo programador use o teclado.

Nele eu faço o que quero, normalmente mais rápido do que com o mouse. Existem situações de exceção, é claro. Mas no geral, me saio melhor no teclado.

Há algum tempo eu conheci um plugin muito interessante, o vimperator. Ele faz uma modificação grande no Firefox, criando comandos ao estilo do vim, meu editor de programas preferido. Assim, você rola página com CTRL+F/B, faz scroll de linha com "j"/"k" (sem as aspas), vai para o início e fim da linha com o "0"/"$". Ah, e pode até mandar imprimir a página atual com o comando ":ha" (hardcopy). Sim, tem os comandos ":" também.

Interessante, né? Eu não imaginava usar um navegador com comandos assim.

De cara, a barra de menu do Firefox some. Você pode configurar o vimperator para mostrar os menus normalmente, mas não é essa a proposta. A ideia é tornar o Firefox um navegador modal, igual ao vim.

Aliás, se você entra no vim e não sabe o que fazer, vai sentir a mesma coisa ao usar o vimperator pela primeira vez. A parte boa é que ele mostra uma página de help com os principais comandos e links para a documentação.

Tá, e que vantagem isso tem?

A vantagem de navegar com agilidade, da mesma forma que faço ao editar meus programas. Uso alguns comandos bem parecidos, tornando minha experiência de navegação similar à experiência de edição de programas. Isso tudo contribui para o domínio sobre meu editor de programas, o que vai me tornar mais produtivo em meu trabalho.

Vale a pena experimentar. É bem diferente. Mas muito produtivo.

Update em 11/09/2011 às 02:42: O Pentadactyl promete ser um vimperator melhorado. Vale experimentá-lo.