Galera, bom dia.
Estou enfrentando um problema durante um select de informações em 7 tabelas distintas.
Meu cenário é o seguinte, estou utilizando uma base que é um colégio, e preciso buscar informações referentes ao histórico de cada aluno durante os anos (2012, 2013, 2014, 2015, 2016). No entando meu select parece estar duplicando os campos e me trazendo um número gigantesco de registros mesmo eu utilizando a clausula DISTINCT. Cada aluno deve ter mais ou menos 100 registros por ano, com o select que fiz, um único aluno me trouxe 300.000 linhas.
Caso algum de vocês consiga me ajudar a aperfeiçoar esse select eu ficaria muito grato. Segue abaixo:
USE (minha base)
select DISTINCT TC.idcurso, TC.nomecurso,
TS.idserie, TS.nomeserie,
TP.siglaperiodo,
TT.idturma,
TA.idaluno, TA.nomealuno, TA.matricula,
TEE.idestabelecimentoensino, TEE.nomeestabelecimento, TEE.cidade, TEE.Estado,
TH.resultadofinal, TH.diasletivos, TH.observacao,
TD.iddisciplina, TD.nomedisciplina, TD.CodigoAgrupamento, TD.TipoDisciplina,
TFA.nota01,
TD.ES_CargaHoraria, TD.NumeroOrdemHistorico
from TbCurso AS TC
INNER JOIN TbSerie AS TS
ON TS.IdCurso = TC.IdCurso
INNER JOIN TbPeriodo AS TP
ON TP.IdUnidade = TC.IdUnidade
INNER JOIN TbTurma AS TT
ON TP.IdPeriodo = TT.IdPeriodo
INNER JOIN TbAluno AS TA
ON TA.IdUnidade = TP.IdUnidade
INNER JOIN TbHistorico AS TH
ON TH.IdAluno = TA.IdAluno
INNER JOIN TbEstabelecimentoEnsino AS TEE
ON TEE.IdEstabelecimentoEnsino = TH.IdEstabelecimentoEnsino
INNER JOIN TbFaseNotaAluno AS TFA
ON TFA.IdAluno = TA.IdAluno
INNER JOIN TbDisciplina AS TD
ON TD.IdDisciplina = TFA.IdDisciplina
where TP.siglaperiodo = '2016'
order by TA.idaluno
Desde já agradeço a atenção de todos.