Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Thiago Medeiros_80190

Pegar menor valor de valores iguais retornados do banco

Recommended Posts

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!

 

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Use UNION, faça a consulta em ambas as tabelas:

( SELECT campos FROM tabela_1 WHERE campo = 'valor' )
UNION
( SELECT campos FROM tabela_2 WHERE campo = 'valor' )

Note que as consultas estão entre parênteses.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.