Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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.
>
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?
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)
);>
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,
Eu tentaria normalizar a tabela, para obter uma informação simples como uma data veja a "volta" que teve de ser dada.
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
Beleza, como ao menos tem uma estrutura facilita com o uso de FUNCTIONS de STRING , SUBSTR , INSTR ETC...
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]
}]
/applications/core/interface/imageproxy/imageproxy.php?img=http://i.imgur.com/HZN2EKX.png&key=570698da22b2512f568a5b4da36672a3851e7c2b51958e3892b411ab99813968" alt="HZN2EKX.png" />
O que este objeto de gráfico aceita receber !?
Um array ? Ou tem de ser um objeto de BD ?
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');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)
Buenas tchê.
Mais ou menos isso?
select substring_index(integrantes, ':', -1) from celula