Pegar dados de uma tabela a partir de condições específicas

Meu problema é o seguinte. Estou fazendo um programa para consultório médico.

Há um cadastro das consultas que consta com nome do médico, do paciente, horário de consulta, etc.

Eu preciso fazer o seguinte: ao selecionar o nome de um dos médicos em um combobox, todos os pacientes desse determinado médico e seus respectivos horários de consulta devem ser mostrados.

Da mesma forma, ao selecionar um certo horário de consulta, todos os pacientes que têm consulta nesse horário bem como os médicos de cada um devem ser mostrados.

Estava fazendo o seguinte:

private void doQuery(String query){
ResultSet rs;
try{
Statement stmt = ConectaClin.createStatement();
rs = stmt.executeQuery(query);

       while(rs.next()){
            dadosConsulta.setText("\nCodigo: " + rs.getObject(1).toString() + "\n" +
                              "Paciente: " + rs.getObject(2) + "\n" +
                              "Médico: " + rs.getObject(3) + "\n" +
                              "Hora: " + rs.getObject(4) + "\n" +
                              "Dia: " + rs.getObject(5) + "\n" +
                              "Mês: " + rs.getObject(6) + "\n" +	
                              "Ano: " + rs.getObject(7) + "\n" +
                              "Pagamento: " + rs.getObject(8));							
       }
    }catch(Exception ex){
        ex.printStackTrace();
    }    
}	

E mais em baixo, para cada campo:

if (e.getSource() == MNome)//nome do médico
{
query = new String(“SELECT * FROM consultas WHERE mnome = '” + MNome.getSelectedItem() + “’”);
doQuery(query);
}

Mas desta forma só o último registro estava sendo mostrado e não todos. Por exemplo, se eu seleciono um médico, mostra apenas as informações da última consulta salva no banco de dados.

Como resolvo meu problema?

Tenta isto:

Table Medico
    - idMedico (PK)
    - nomeMedico
Table Consulta
    - idConsulta (PK)
    - idMedico (FK)
    - idPaciente (FK)
    - horario
Table Paciente
    - idPaciente (PK)
    - nomePaciente

Então para o combo de médicos:

String allMedicos = "select m.idMedico, m.nomeMedico from Medico m";

Os pacientes dos médico:

String AllPacientByMed = 
    "select p.idPaciente, p.nomePaciente, c.horario from Pacientes p, Consulta c where c.idMedico = ? and c.idPaciente = p.idPaciente and c.horario > func("today 00:00:00") and c.horario < func("today 23:59:59");

Func eu inventei, não sei que banco tu usa. Procure uma função que te permita compara o horário para pegar as consulta do dia “today”.

Os paciente e médicos de um horário:

String allPacMedByHor = 
    "select p.idPaciente, p.nomePaciente, m.idMedico, m.nomeMedico from Paciente p, Medico m, Consulta c where c.horario = ? and c.idPaciente = p.idPaciente and c.idMedico = m.idMedico";

Eu não testei as consultas mas já deve te dar uma idéia. T+

Só estou falando de uma tabela, a tabela Consultas, que contem os seguintes campos:

private JComboBox ConsultaCod;
private JComboBox PNome; //nome do paciente
private JComboBox MNome; // nome do médico
private JComboBox HorarioCon;
private JComboBox MesCon;
private JComboBox DiaCon;
private JComboBox AnoCon;
private JComboBox Pagamento;

Quando seleciono o nome do médico, apenas a última consulta cadastrada para esse médico é mostrada e eu queria que todas as consultas para esse médico fossem mostradas.

Já tentou executar essa query diretamente no banco? E todos os registros da tabela estão exatamente como na query, inclusive maiusculos e minusculos? Porque da forma que vcoê está fazendo precisa estar exatamente igual…