Patrocínio Natura
Convertendo varchar em date no MySQL
Banco de Dados / 30 de agosto de 2012

Peguei uma manutenção de um sistema PHP/MySQL pra fazer e surgiu a necessidade de ordenar determinada tabela pelo campo data, porém pra minha surpresa esse campo era do tipo VARCHAR() ao invés de DATE() ou DATETIME(). A data estava armazenada na tabela no formato “dd/mm/yyyy”, exemplo: SELECT data FROM contas; +————+ | data | +————+ | 26/11/2003 | | 04/12/2003 | | 28/11/2003 | | 05/12/2003 | | 29/12/2003 | +————+ O problema é que ao mandar ordenar a tabela por data, por ser VARCHAR o resultado não funciona como o esperado:

Script para exportação do MySQL para CSV
Banco de Dados , PHP / 3 de maio de 2011

Script simples, para exportação de relatórios vindos do MySQL, não fica nada salvo no servidor, o usuário é questionado aonde ele quer salvar o arquivo .csv gerado, espero que seja útil para quem estiver precisando. É só colocar como link direcionado para o arquivo exporta_csv.php, modificar a query no arquivo exportcsv.inc.php e pronto. exporta_csv.php

UNION, EXCEPT, e INTERSECT no MySql
Banco de Dados , Programação / 23 de novembro de 2010

Precisei usar os comandos UNION, EXCEPT, e INTERSECT no MySql, para minha grande surpresa o MySql não da suporte para esses comandos, exceto o Union. E como fazer para ter o resultado esperado sem precisar recorrer a “manobras” fora do MySql? A solução que encontrei foi usando subquery. Seguem abaixo pequenos modelos: Primeiro um modelo simples apenas entre duas tabelas EXCEPT SELECT `tabela1`.`cod_barra` as campo1, `tabela2`.`cod_barra` as campo1 FROM `tabela1` LEFT JOIN `tabela2` ON `tabela2`.`cod_barra` = `tabela1`.`cod_barra` WHERE `tabela2`.`cod_barra` IS NULL; INTERSECT

MySQL/PHP/Delphi: Resgatando o ID da última entrada
Banco de Dados , Delphi , PHP , Programação / 24 de julho de 2010

Quando desenvolvemos um sistema que tem operação com base de dados é inevitável que exista relação entre as tabelas e por vezes somos obrigados a inserir dados em uma tabela e em seguida inserir novos dados em uma segunda tabela que tenha um registro de ligação entre elas. Um caso clássico seria uma tabela de cadastro de dados onde armazenamos os dados pessoais dos envolvidos no sistema e em uma segunda tabela inserimos, por exemplo, dados referentes ao desempenho dessa pessoa, na segunda tabela, normalmente, usamos como referência um código de registro da primeira tabela para fazer a ligação. É muito apropriado criar formulários únicos com dados que estão nas duas tabelas, para economizar processo e para agilizar o colhimento das informações, mas temos que ao gravar os dados saber se é de um envolvido já cadastrado ou um novo cadastro. Quando temos um cadastrado existente fica fácil, pois ele é reconhecido e já sabemos o número de registro dele. No caso de um novo envolvido temos que criar um registro na tabela de cadastro e ao mesmo tempo fazer a inserção nas tabelas ligadas com o mesmo registro já criado, para isso temos comandos específicos para recuperar essa entrada sem ter…

Otimizando PHP/MySQL: Concatenando Partes de um Registro e Criando Novas Informações
Banco de Dados , PHP , Programação / 7 de junho de 2010

Nosso maior público, no desenvolvimento de sistemas personalizados, são empresas com foco em eventos e congressos, dia desses um dos nossos clientes precisou de uma solução imediata com um evento feito sem o nosso sistema. A massa de registros dos inscritos para o evento veio sem um campo, muito comum para esse tipo de segmento, que é o “nome para crachá”, onde se espera que o participante coloque como quer ser identificado, e limita-se o número de caracteres para não extrapolar o tamanho da etiqueta que se utiliza na credencial. A massa era grande, aproximadamente 1200 participantes e estava alocado em servidor alheio, não poderíamos fazer nenhuma modificação na base do evento, formação de conteúdo em novo campo, etc. Então utilizamos uma combinação de funções para solucionar o problema, partimos da proposta que os participantes não escolheriam seus nomes para a credencial e sim que essa identificação seria formada pelo primeiro nome e o último sobrenome. Veja como ficou: SELECT   Upper(concat(SUBSTRING_INDEX(`cadastrogeral`.`nome`,’ ‘,1),’ ‘,SUBSTRING_INDEX(`cadastrogeral`.`nome`,’ ‘,-1)))  AS `cracha` FROM  `cadastrogeral` No exemplo acima se temos no campo “nome” o conteúdo: “José Pedro dos Santos” teremos como “crachá” o retorno “JOSÉ SANTOS”. Considerações: