Pegar menor valor de valores iguais retornados do banco
Pessoal, bom dia!
Estou com uma situação que não consigo resolver. Meu conhecimento em banco de dados e sql não é grande e por isso criei este post.
Na minha base de dados tenho duas tabelas:
tbl_exame_exame (Informações sobre os exames de um laboratório)
chave - chave que identifica cada um dos exames
nm_exame - nome do exame
cd_exame - código abreviado do exame
nm_sinonimo - Sinônimo do exame (Outras nomenclaturas utilizadas para um mesmo exame)
tbl_exame_precos (Existe a possibilidade de ter tabelas de preços vinculadas a convênios convênios. A cada uma dessas tabelas criadas eu posso vincular exames. O objetivo dessa tabela é, justamente, esse vincular exames da tabela anterior a uma tabela específica definindo valores a cada um dos exames para um convênio específico)
chave - chave de uma vinculação de exame
chave_tbl_intervencao - chave de uma tabela
chave_exame - chave de um exame vincula a tabela referente ao camp anterior
vl_venda - valor de venda de um exame.
Vamos a minha dúvida...
Na minha tela de solicitar um exame tenho um combobox para o usuário selecionar o convênio. Após o convênio ser selecionado é carregado em um combobox posterior as tabelas de exames vinculadas a tal convênio.
Vamos a uma situação real:
Convênio: CARTBA
Tabelas de preços: - BAURU_CARTFE
- CONVBA_SIMILITUDE
Bom, pq que a tabela CONVBA_SIMILITUDE não apareceu no combobox. Simplesmente por ser uma similitude não pode ser mostrada. A ideia da similitude é o que? Vamos supor que o paciente deseja fazer o exame 17AHP. Este exame na tabela BAURU_CARTFE está custando R$41,40 e na tabela CONVBA_SIMILITUDE custa R$20,00. Quando este exame for inserido na lista de exames a serem realizados, o sistema tem que pegar o da tabela similitude e não da tabela normal.
Continuando... Se eu digito o exame com código 17AH ele teria que fazer o seguinte. Buscar nas tabelas BAURU_CARTFE e CONVBA_SIMILITUDE todos os exames que possuem nome ou código com o que foi digitado e listá-los. Se digitar 17AHP cai em uma situação pq existe esse mesmo exame nas duas tabela.
Resumindo, o que for digitado no campo, a busca tem que ser realizada nas duas tabelas. Caso um mesmo exame esteja nas duas tabelas deve pegar o de menor valor. Como que eu consigo travar isso? A sql que estou utilizando é:
select DISTINCT tbl_exame_precos.chave,nm_exame,cd_exame,nm_sinonimo, vl_venda from tbl_exame_exame, tbl_exame_precos where chave_exame = tbl_exame_exame.chave and ( (chave_tbl_intervencao = 'L01700020130424134201') OR (chave_tbl_intervencao = 'L01700020130424134223') ) and ((nm_exame like '17AHP%') OR (cd_exame like '17AHP%') OR (nm_sinonimo like '17AHP%')) LIMIT 10
mas está trazendo a lista com dois nomes. Detalhe: Ele traz dois nomes para serem selecionados, mas qualquer um que for selecionado ele pega o valor 20,00, ou seja, do menor. Alguém pode me ajudar?
Obrigado!
Discussão (2)
Carregando comentários...