Resultado da pesquisa do banco esta duplicada![RESOLVIDO]

4 respostas
P

Ola,
Eu estou buscando os valores dos modulos de certa disciplina do banco e o resultado eu estou armazenando em um arraylist para usar como texto das jlabels que quero inserir na tela.Até aqui tudo bem,o problema é que mesmo eu usando o distinct os dados estão vindo duplicados :frowning:
meu código é o seguinte:

if(comboBox.getSelectedItem()!=null && !comboBox.getSelectedItem().equals(null) ) { resultado=comando.executeQuery("select distinct m.nome,d.id,t.id_ensino from modulo m,disciplina d,turma t where d.nome='"+comboBox.getSelectedItem()+"' and d.id_ensino=t.id_ensino"); while(resultado.next()) { modulosDaDisciplinaSelecionada.add(resultado.getInt(1)); System.out.println("nome do modulo->resultado.getInt(1):"+resultado.getInt(1)); }
La no console é impresso o seguinte:

nome do modulo->resultado.getInt(1):1 nome do modulo->resultado.getInt(1):1 nome do modulo->resultado.getInt(1):2 nome do modulo->resultado.getInt(1):2 nome do modulo->resultado.getInt(1):3 nome do modulo->resultado.getInt(1):3 nome do modulo->resultado.getInt(1):4 nome do modulo->resultado.getInt(1):4 nome do modulo->resultado.getInt(1):5 nome do modulo->resultado.getInt(1):5 nome do modulo->resultado.getInt(1):6 nome do modulo->resultado.getInt(1):6

Alguém poderia me ajudar a encontrar o erro?
Obrigada
:wink:

4 Respostas

ricktg

O SQL esta faltando relacionamento. A tabela Modulo não esta relacionada com ninguem no where.

Não ficaria algo assim?

select distinct m.nome, d.id, t.id_ensino 
from modulo m, disciplina d, turma t
where d.nome = '"+comboBox.getSelectedItem()+"' 
and d.id_ensino = t.id_ensino 
and m.id_modulo = d.id_modulo

A ultima linha eu chutei… Mas ela deve ser relacionada com alguem senão para cada linha do MODULO, ele traz as outras linhas relacionadas entre DISCIPLINA e TURMA.

P

Oi ricktg!!
Fiz o que tu disseste e ta quase lá tipo eu fiz assimresultado=comando.executeQuery("select distinct m.nome,d.id,t.id_ensino from modulo m,disciplina d,turma t where d.nome='"+comboBox.getSelectedItem()+"' and d.id_ensino=t.id_ensino and m.id_disciplina=d.id");
e no console so repetiu o 1 vez

nome do modulo->resultado.getInt(1):1 nome do modulo->resultado.getInt(1):2 nome do modulo->resultado.getInt(1):1

agora so tenho que ver pq o 1 resultado ta se repetindo 2 vezes :wink: vou checar isso la e ja posto!
obrigada pela ajuda :slight_smile:

ricktg

Será que não tem 2 disciplinas com o mesmo nome para o mesmo modulo?

P

hmm tipo os numeros dos modulos são os mesmos para cada disciplina o que muda é a quantidade de módulos para cada disciplina.
Por exemplo a disciplina de portugues tem os modulos 1,2,3 e 4,ja educação fisica tem 1,2 e 3.
mas agora e tava executando aqui e não repetiu o primeiro modulo :shock:

Criado 13 de julho de 2011
Ultima resposta 13 de jul. de 2011
Respostas 4
Participantes 2