SELECT EM VB

SERGIOPASCOAL 08/10/2013 07:03:39
#429673
Pessoal mais uma vez eu com minhas selects

uso assim:
vSQL = [Ô]Select A.*, P.nome as nome_paciente, F.nome as nome_profissional, S.status as nome_status, E.nome as nome_especialidade from Agenda A, Pacientes P, Profissionais F, Status S, Especialidades E [Ô] & _
[Ô]Where A.paciente = P.id And f.id = A.profissional and S.id = A.status and E.id = A.especialidade[Ô] & _
[Ô] and A.paciente = [Ô] & vCodPaciente & _
[Ô] order by A.data, A.horarioinicio[Ô]

Quando não foi selecionado a especialidade, não retorna nada, então gostaria de saber como posso fazer essa consulta onde deve vir todos os registros do paciente na agenda mesmo não marcando alguns campos.

Espero que eu tenha sido claro, obrigado.
MARCELO.TREZE 08/10/2013 09:11:06
#429675
troque os [txt-color=#0000f0]AND [/txt-color]por [txt-color=#0000f0]OR[/txt-color]
SERGIOPASCOAL 08/10/2013 09:16:17
#429676
ja tentei usar o [Ô]or[Ô] mas aí vem todos registro do banco

quando o usuário não seleciona a especialidade grava no banco como zero, e como não tenho a especialidade 0 então ele não traz nada

mesmo assim obrigado
MARCELO.TREZE 08/10/2013 09:26:25
#429679
se grava no banco como zero ja pensou em pesquisar diferente de zero, ou seja acrescente:

and A.especialidade <> 0
SERGIOPASCOAL 08/10/2013 09:42:51
#429680
então Marcelo, se a especialidade for zero quero que liste também, só que quando é zero não aparece
MARCELO.TREZE 08/10/2013 09:49:27
#429681
então Sergio pra entender o problema to tentando entender a estrutura da sua tabela, no caso vc faz uma comparação do id especialidade, com o especialidade da agenda, porem acredito que na tabela especialidade não exista o 0(zero) porém na agenda é gravado zero na especialidade é isso?

SERGIOPASCOAL 08/10/2013 09:59:42
#429682
sim é isso mesmo, o usuário tem a liberdade de definir ou não a especialidade, então o campo especialidade as vezes é zero.
Mas mesmo assim deve ser listado na consulta

Obrigado
MARCELO.TREZE 08/10/2013 10:19:43
#429684
então assim não vai funcionar quer uma dica, crie a especialidade 0 na tabela especialidade que ai sim funciona, defina zero como indefinida, sem especialidade, ou outra coisa que achar melhor mas crie esta especialidade na tabela especialidade.
MARCELO.TREZE 08/10/2013 10:21:49
#429685
ah ia esquecendo vc pode tentar isto também

vSQL = [Ô]Select A.*, P.nome as nome_paciente, F.nome as nome_profissional, S.status as nome_status, E.nome as nome_especialidade from Agenda A, Pacientes P, Profissionais F, Status S, Especialidades E [Ô] & _
[Ô]Where A.paciente = P.id And f.id = A.profissional and S.id = A.status and [txt-color=#0000f0](E.id = A.especialidade OR A.especialidade = 0)[/txt-color][Ô] & _
[Ô] and A.paciente = [Ô] & vCodPaciente & _
[Ô] order by A.data, A.horarioinicio[Ô]
SERGIOPASCOAL 08/10/2013 11:12:26
#429689
já fiz como vc disse (E.id = A.especialidade OR A.especialidade = 0) mas assim ele duplica um monte de registro, pensei na opção em criar uma especialidade [Ô]0 - não definida[Ô] mas o campo ID é autonumeração, rssss
Fiz assim por enquanto, contrui outro select quando for listar e acrescenta o nome, só um quebra galho

mas caso descubro posto aqui, obrigado
MARCELO.TREZE 08/10/2013 11:46:53
#429693
pascoal por isso o campo autonumeração nunca é indicado para uso das consultas, o ideal é sempre fazer um campo codigo

ex:

id =autonum
cod = numero [ô]que seria o codigo da especialidade
especialidade=texto

mas creio que você ja tenha resolvido, se não crie o campo cod, coloque os numeros necessarios, e altere na consulta

Página 1 de 2 [14 registro(s)]
Tópico encerrado , respostas não são mais permitidas