Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

ruypgn

Agrupar irmãos quando não possuem pais consanguíneos.

Recommended Posts

Boa tarde, a todos os amigos do fórum.

 

Por favor, necessito de uma ajuda de todos vocês.

 

-Necessidade: Listar os alunos que são irmãos (consanguíneos ou não)

 

- O que foi realizado: Criei uma query que consegue pesquisar todos os irmãos e seus respectivos pais, seja os pais consanguíneos ou não.

 

- Problemática: Preciso agrupar os irmãos, porem ao colocar no parâmetro do GROUP BY para agrupar o CODMAE quando o pai não é consanguíneo de uns dos alunos que são irmãos, o que ocorre é que o group by não agrupa essa família.

 

Código da Query

 

SELECT

EALUNOS.MATRICULA,

EALUNOS.NOME,

EMATRICPL.CODTUR,

EALUNOS.MAE,

(SELECT COUNT (EA.MATRICULA) FROM EALUNOS EA LEFT OUTER JOIN EMATRICPL EMA ON EMA.MATALUNO = EA.MATRICULA WHERE EMA.PERLETIVO = EMATRICPL.PERLETIVO AND EMA.SITMAT = EMATRICPL.SITMAT AND EMA.CODFILIAL = EMATRICPL.CODFILIAL AND EA.MAE = EALUNOS.MAE) AS TOTALMAE,

EALUNOS.PAI,

(SELECT COUNT (EA.MATRICULA) FROM EALUNOS EA LEFT OUTER JOIN EMATRICPL EMA ON EMA.MATALUNO = EA.MATRICULA WHERE EMA.PERLETIVO = EMATRICPL.PERLETIVO AND EMA.SITMAT = EMATRICPL.SITMAT AND EMA.CODFILIAL = EMATRICPL.CODFILIAL AND EA.PAI = EALUNOS.PAI) AS TOTALPAI,

 

((SELECT COUNT (EA.MATRICULA) FROM EALUNOS EA LEFT OUTER JOIN EMATRICPL EMA ON EMA.MATALUNO = EA.MATRICULA WHERE EMA.PERLETIVO = EMATRICPL.PERLETIVO AND EMA.SITMAT = EMATRICPL.SITMAT AND EMA.CODFILIAL = EMATRICPL.CODFILIAL AND EA.MAE = EALUNOS.MAE) + (SELECT COUNT (EA.MATRICULA) FROM EALUNOS EA LEFT OUTER JOIN EMATRICPL EMA ON EMA.MATALUNO = EA.MATRICULA WHERE EMA.PERLETIVO = EMATRICPL.PERLETIVO AND EMA.SITMAT = EMATRICPL.SITMAT AND EMA.CODFILIAL = EMATRICPL.CODFILIAL AND EA.PAI = EALUNOS.PAI)) AS QDTOTAL

 

FROM

EALUNOS LEFT OUTER JOIN EMATRICPL ON EMATRICPL.MATALUNO = EALUNOS.MATRICULA

WHERE

EMATRICPL.PERLETIVO='2014' AND

EMATRICPL.SITMAT='01' AND

EMATRICPL.CODFILIAL = '7'

 

GROUP BY

EALUNOS.MAE,

EALUNOS.PAI,

 

EALUNOS.MATRICULA,

EALUNOS.NOME,

EMATRICPL.CODTUR,

 

EMATRICPL.PERLETIVO,

EMATRICPL.SITMAT,

EMATRICPL.CODFILIAL

 

HAVING

((SELECT COUNT (EA.MATRICULA) FROM EALUNOS EA LEFT OUTER JOIN EMATRICPL EMA ON EMA.MATALUNO = EA.MATRICULA WHERE EMA.PERLETIVO = EMATRICPL.PERLETIVO AND EMA.SITMAT = EMATRICPL.SITMAT AND EMA.CODFILIAL = EMATRICPL.CODFILIAL AND EA.MAE = EALUNOS.MAE) + (SELECT COUNT (EA.MATRICULA) FROM EALUNOS EA LEFT OUTER JOIN EMATRICPL EMA ON EMA.MATALUNO = EA.MATRICULA WHERE EMA.PERLETIVO = EMATRICPL.PERLETIVO AND EMA.SITMAT = EMATRICPL.SITMAT AND EMA.CODFILIAL = EMATRICPL.CODFILIAL AND EA.PAI = EALUNOS.PAI)) = '3'

 

 

Vejamos o resultado obtido

 

MATRICULA NOME CODTUR MAE TOTALMAE PAI TOTALPAI QDTOTAL
---------- ------------------- ---------------- ----------- ----------- ----------- ---------- -----------
3819 Pedro Carvalho 2ª série A 12108 2 12107 1 3
5546 Samuel Filho 8º ano A 12108 2 20289 1 3
6397 Artur Lotito 5º ano B 18948 2 18947 1 3
8047 Leonardo Lotito 1º ano C 18948 2 23317 1 3
6427 Arturo Garcia 5º ano B 19039 1 19038 2 3
8002 Victor Zangar 2º ano A 19084 2 19082 1 3
6442 Mariana Zangar 5º ano A 19084 2 19083 1 3
3401 Victor Long 3ª série B 22833 2 5572 1 3
7857 Antonio Long 4º ano C 22833 2 22832 1 3
8011 Rodrigo Garcia 2º ano D 23219 1 19038 2 3

Por favor, como eu posso fazer para agrupar os dois irmãos Arturo Garcia e Rodrigo Garcia, sendo que o pai deles é o mesmo porem a mãe não é.

 

Agradeço a todos pela ajuda.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não entendi.

Vc ja nao esta agrupando?

Vc nao quer eh ordernar para aparecer na tela corretamente?

O_o

Compartilhar este post


Link para o post
Compartilhar em outros sites

Agrupar como ?

Como precisa exibir estes dados.

 

Você já tem os códigos de pai e mãe.

 

 

Note também que não sendo um Sistema para a Secretária de Educação de algum Estado ou de uma Cidade grande na realidade o problema é uma exceção (se for o caso de uma escola) , não seria melhor tratar assim ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Motta!

Como vai?

Muito obrigado pelo retorno, agradeço pela ajuda.

bom... vamos lá, deixa eu explicar detalhadamente.

- Eu listei todos os irmãos, porem eu tenho que agrupa-los, para agrupar utilizei o campo do código "MAE", então o group by entende que aquele campo é o campo chave para agrupamento (Figura 01), porem eu tenho um caso em que exite um pai "Cod: 19038" que ele tem dois filhos porem com mães diferentes "cods: 19039 e 23219", então eu gostaria de agrupar esse pai (Figura 02).

Como faço isso?

(Figura 01) Agrupado por Código da Mãe.

392416-20141023-180740.jpg

 

 

(Figura 02) Resultado de como deve ficar - agrupo todas as mães identificas que possuem o mesmo pais e que for diferente desse universo é agrupado pelo código do pai.

392416-20141023-181447.jpg

 

Aguardo retorno, obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

No caso da MÂE 18948 não deveria ser o mesmo PAI ?!

 

O Agrupamento deveria ser feito por uma concatenação PAI/MÃE ou MÃE/PAI, talvez uma opção do relatório.

 

Este caso deste pai deve ser uma exceção e deveria ser tratado assim , é "mais barato" , a não ser que seja um requisitiso de sistema , que só justificaria num caso de grande volume 9Secretárias de educação p ex)

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.