Fórum Desagrupar uma coluna no MYSQL #521401
30/05/2015
0
Alguem pode me ajudar.
Márcio
Curtir tópico
+ 0Post mais votado
30/05/2015
Ficaria mais fácil entender e também poder te ajudar...
Marisiana Battistella
Gostei + 2
Mais Posts
30/05/2015
Márcio
$sql = "SELECT *, MAX(paciente.num_parcelas)-SUM(financeira.parcelas_pg) AS 'parcelas_rest',
SUM(financeira.parcelas_pg) AS 'parcelas_pg1',
GROUP_CONCAT(venc_parcelas) AS 'venc_parc02'
FROM paciente inner join financeira on paciente.id = financeira.id_pac
where status=1
GROUP BY paciente.id
ORDER BY nome_pac ASC ";
No lugar de GROUP_CONCAT teria outro comando para poder exibir todos os "venc_parcelas" que está na tabela financeira pois está agrupado pelo GROUP BY e quero desagrupar só o "venc_parcelas".
A contatenação não satifaz o objetivo do sistema é possivél depois de agrupado desagrupar apenas esta a culuna "venc_parcelas" pois ela varia conforme o numero de parcelas porem ela é relacionada com o id da tabela paciente.
As tabelas "paciente e financeira" estão ligadas ao id e id_pac
Gostei + 1
30/05/2015
Marisiana Battistella
Não utilize SELECT * informe os nomes dos campos que você precisa que o SQL retorne.
E o agrupamento não vai funcionar justamente porque você está agrupando pelo ID que é um valor único para cada registro.
Você pode postar a estrutura dessas duas tabelas (nomes dos campos, FK e PK ) ?
Gostei + 0
31/05/2015
Márcio
[img:descricao=TB paciente]http://arquivo.devmedia.com.br/forum/imagem/433925-20150531-001543.png[/img]
Gostei + 0
31/05/2015
Marisiana Battistella
Veja se esse código se aproxima do que você precisa:
SELECT fin.venc_parcelas AS 'venc_parc02',
MAX(pac.num_parcelas) - SUM(fin.parcelas_pg) AS 'parcelas_rest',
SUM(fin.parcelas_pg) AS 'parcelas_pg1'
FROM paciente pac
INNER JOIN financeira fin
ON fin.id_pac = pac.id
WHERE pac.status=1
GROUP BY fin.venc_parcelas
ORDER BY pac.nome_pac ASC
Gostei + 0
31/05/2015
Márcio
[img]http://arquivo.devmedia.com.br/forum/imagem/433925-20150531-145852.png[/img]
Esta é a imagem resultante do select. Preciso que em cada paciente mostre o campo venc_parcelas para determinado paciente mas mostre seu nome apenas uma vez.
Gostei + 0
01/06/2015
Marisiana Battistella
Na aplicação você terá que tratar a visualização dos dados...
SELECT pac.nome_pac,
fin.venc_parcelas AS 'venc_parc02',
MAX(pac.num_parcelas) - SUM(fin.parcelas_pg) AS 'parcelas_rest',
SUM(fin.parcelas_pg) AS 'parcelas_pg1'
FROM paciente pac
INNER JOIN financeira fin
ON fin.id_pac = pac.id
WHERE pac.status=1
GROUP BY pac.nome_pac,
fin.venc_parcelas
ORDER BY pac.nome_pac ASC Gostei + 1
01/06/2015
Marisiana Battistella
Gostei + 0
01/06/2015
Márcio
Gostei + 0
01/06/2015
Márcio
Gostei + 0
01/06/2015
Marcos P
Gostei + 0
01/06/2015
Márcio
Gente do jeito que está no representado é o que eu preciso.
Só quero substituir o GROUP_CONCAT mas nada o restante tá ok ainda falta tratar as casas decimais para valores mas isso é o de menos só preciso de uma forma de substituir o concat mas nada.
Eu não consegui uma função de "desagregação" quando faço a substituição do group by os nomes também são exibidos na real preciso que o nome apareça uma vez e as datas de venc que estão ligadas ao tal nome apareça em sua totalidade..
Na exibição dá o resultado que preciso porem preciso substiuir o concat.
Gostei + 0
01/06/2015
Marisiana Battistella
Que ferramenta você está utilizando e qual é a linguagem de desenvolvimento?
Gostei + 0
01/06/2015
Márcio
Mas a ferramenta tem hora que netbeens mas agora estou no dreamweaver para facilitar o uso de tabelas e formulários.
Gostei + 0
01/06/2015
Marcos P
Não entendi essa frase !
Como contingência, você não consegue pegar os dados como está gerando agora e desmembrando-os do lado da aplicação ?
Em relação a query que você colocou no Fiddle, qual sua necessidade ?
Manter as totalizações (parcelas_rest e parcelas_pg1 ) e individualizar os vencimentos (venc_parc02)...
nome_pac parcelas_rest parcelas_pg1 venc_parc02 --------------- --------------- --------------- --------------- Carlos Barão 3 0 2015-06-21 Carlos Barão 3 0 2015-08-21 Carlos Barão 3 0 2015-07-21 Márcio André 5 0 2015-07-30 Márcio André 5 0 2015-09-30 Márcio André 5 0 2015-06-30 Márcio André 5 0 2015-08-30 Márcio André 5 0 2015-10-30
É isso ?
Gostei + 0
01/06/2015
Marisiana Battistella
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)