tiagocaus 1 Denunciar post Postado Agosto 13, 2014 CREATE TABLE `celula` ( `ID_Celula` int(255) unsigned NOT NULL AUTO_INCREMENT, `integrantes` text, PRIMARY KEY (`ID_Celula`) ); INSERT INTO `celula` (`ID_Celula`, `integrantes`) VALUES (1, '2:2014-08-13,4:2014-08-13,6:2014-08-13,7:2014-08-13'), (2, '3:2014-08-13,5:2014-08-13,6:2014-08-13'); Como eu faço para mostrar somente a data da coluna integrantes? Teste online http://sqlfiddle.com/#!2/1729fd Agradeço qualquer ajuda. Compartilhar este post Link para o post Compartilhar em outros sites
Marlon Pacheco 132 Denunciar post Postado Agosto 13, 2014 Buenas tchê. Mais ou menos isso? select substring_index(integrantes, ':', -1) from celula Compartilhar este post Link para o post Compartilhar em outros sites
tiagocaus 1 Denunciar post Postado Agosto 13, 2014 Buenas tchê. Mais ou menos isso? select substring_index(integrantes, ':', -1) from celula Sim, mas precisa mostrar todas as datas, veja como ficou http://sqlfiddle.com/#!2/1729fd/4 Sabe como fazer para mostrar tudo? Compartilhar este post Link para o post Compartilhar em outros sites
lokaodomau 61 Denunciar post Postado Agosto 13, 2014 Uma sugestão somente se este projeto estiver sendo implementado, pois se houver muitos registros, pode ser meio complicado o ajuste... Use esta tabela apenas para descrição da célula e crie uma outra tabela ligando os integrantes á célula, desta forma: CREATE TABLE celula_x_integrantes ( id_celula int(255) unsigned NOT NULL, id_integrante int(255) unsigned NOT NULL, horario_inclusao DATE NULL, PRIMARY KEY (id_celula, id_integrante) ); Compartilhar este post Link para o post Compartilhar em outros sites
tiagocaus 1 Denunciar post Postado Agosto 13, 2014 Uma sugestão somente se este projeto estiver sendo implementado, pois se houver muitos registros, pode ser meio complicado o ajuste... Use esta tabela apenas para descrição da célula e crie uma outra tabela ligando os integrantes á célula, desta forma: CREATE TABLE celula_x_integrantes ( id_celula int(255) unsigned NOT NULL, id_integrante int(255) unsigned NOT NULL, horario_inclusao DATE NULL, PRIMARY KEY (id_celula, id_integrante) ); O problema que a tabela já existe e tem muitos outros campos, coloquei aqui de forma simplificada para melhor visualização. É um recurso novo que estou tentando criar, Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Agosto 13, 2014 Eu tentaria normalizar a tabela, para obter uma informação simples como uma data veja a "volta" que teve de ser dada. Compartilhar este post Link para o post Compartilhar em outros sites
tiagocaus 1 Denunciar post Postado Agosto 14, 2014 O problema é que essa tabela é antiga, e os clientes tem muitos registros nela. Eu estou tentando pensar em algo, sem a necessidade de desestruturar a tabela. Esse código exige, mas não todas as datas http://sqlfiddle.com/#!2/1729fd/4 Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Agosto 14, 2014 Beleza, como ao menos tem uma estrutura facilita com o uso de FUNCTIONS de STRING , SUBSTR , INSTR ETC... Compartilhar este post Link para o post Compartilhar em outros sites
tiagocaus 1 Denunciar post Postado Agosto 14, 2014 Eu não estou sabendo como resolver esse problema. A ideia é pegar todas a datas, agrupar pelo mês. Quero montar um grafico. series: [{ data: [7.0, 6.9, 9.5, 14.5, 18.4, 21.5, 25.2, 26.5, 23.3, 18.3, 13.9, 9.6] }] Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Agosto 14, 2014 O que este objeto de gráfico aceita receber !? Um array ? Ou tem de ser um objeto de BD ? Compartilhar este post Link para o post Compartilhar em outros sites
tiagocaus 1 Denunciar post Postado Agosto 14, 2014 Com o valor que conseguir pegar do BD irei montar o grafico. Com o select montado eu montaria um função onde iria informar somente o mes para pegar o valor. function m1($mes){ } echo m1('08'); Compartilhar este post Link para o post Compartilhar em outros sites
tiagocaus 1 Denunciar post Postado Agosto 14, 2014 Consegui fazer com a ajuda de um amigo. Para quem tiver o mesmo problema, veja a solução: SELECT YEAR(date) year, MONTH(date) month, COUNT(*) count FROM ( SELECT SUBSTRING_INDEX(value, ':', 1) id, CAST(SUBSTRING_INDEX(value, ':', -1) AS DATE) date FROM ( SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(integrantes, ',', n), ',', -1) value FROM celula CROSS JOIN ( SELECT a.N + b.N * 10 + 1 n FROM (SELECT 0 AS N UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) a ,(SELECT 0 AS N UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) b ) tally WHERE n <= 1 + (LENGTH(integrantes) - LENGTH(REPLACE(integrantes, ',', ''))) ) q ) o GROUP BY YEAR(date), MONTH(date) Compartilhar este post Link para o post Compartilhar em outros sites