Ajuda em pesquisa com Firebird

Firebird

23/04/2008

Nobres colegas,

Este é meu primeiro projeto utilizando o firebird e estou muito satisfeito com o mesmo.

Tenho a seguinte dúvida: Tenho 2 tabelas Servidor e Funcao (onde grava o nome da escola que o professor leciona e sua funcao na escola) como abaixo:

Tabela Servidor
Professor 1
Professor 2
professor 3 etc

Tabela Funcao
Funcao 1
Funcao 2
Funcao 3 etc

Ocorre que, o Professor 1 leciona em 3 escolas diferentes com a mesma funcao (portuques por exemplo).

Preciso fazer um select que me retorne a relação de professores por função. O que ocorre é o seguinte, quando faço meu select se o professor leciona em 3 escolas diferentes o mesmo é repetido 3 vezes. Preciso que retorne somente uma vez de acordo com a matéria selecionada.

Já tentei distinct e não deu certo. Abaixo segue meu select:

//Professor por Cargo
If Combo.ItemIndex=35 then
Begin
With dm.cds_Servidor do
Begin
dm.cds_Servidor.Close;
dm.cds_Depende.Close;
dm.cds_SitFunc.Close;

CommandText:=´Select A.*, B.* from Servidor A, Sit_Funcional B where ´+
´A.ID_CodServ=B.ID_CodServ and B.Cargo=:id_Cargo´;

Params.ParamByName(´id_Cargo´).AsString := Busca1.Text;
dm.cds_Depende.Open;
dm.cds_Servidor.open;
dm.cds_SitFunc.Open;
end;
If dm.cds_Servidor.RecordCount=0 then ShowMessage(´Registro não Encontrado! Verifique as entradas digitadas.´)
end;

Utilizo Firebird 2 e delphi 7.

Talvez, não tenha me espressado corretamente. Vou tentar exemplificar melhor abaixo:

O que ocorre, é que na tabela de servidores existem os dados do professor e na tabela Sit_Func os locais onde o professor leciona.

Sendo que um mesmo professor leciona em até 4 escolas diferentes.

O que queria retornar, seria a relação nominal de professores que lecionam uma matéria específica sem que seja repetido.

O que ocorre agora é que se pedir uma relação de professores por matéria, minha sql retorna uma duplicidade, isso é, se o professor leciona português em 3 escolas diferentes me retorna o nome do professor duplicado 3 vezes.

Abraços.

Ralp Alves Bezerra


Ralp

Ralp

Curtidas 0

Respostas

Parosan

Parosan

23/04/2008

O distinct faz com que só apareçam as linhas totalmente unicas, sem repetição de nenhum campo, vc deve substituir o * pelos campos que vc realmente necessita se eles tornarem iguais as linhas de cada professor, só aparecerá o mesmo professor caso pesquisa mais de uma matéria e o professor lecione mais de uma, vc deve deixar por exemplo ´A.Nome, A.Matéria´ se forem só os dois campos, não haverá a repetição do mesmo professor matéria.


GOSTEI 0
POSTAR