Jump to content
Fórum Script Brasil
  • 0

Select com duas condições na mesma tabela.


eKrinski

Question

Agradeço a todos que colaborarem.

O desafio simples a princípio é o seguinte:

Mostrar veiculos que estao na garagem para MANUTENCAO (entraram hoje ou seja estao presentes na garagem agora ) mas que não tenham mais SERVIÇOS em aberto para ele.

Montar uma Query onde apareçam os veiculos LIBERADOS pela oficina.

 

Tenho  uma tabela com os Veiculos presentes na garagem (Tabela: Nagaragem)

Tenho outra tabela com os Servicos  com os campos Aberto_em, Fechado_em 

fiz algo do tipo   (comentando para facilitar...)

SELECT N.Veiculo                                                                                                                                                #quero mostrar o numero do veiculo que está PRESENTE  na tabela NAGARAGEM
FROM Nagaragem as N                                                                                                                                       # apelidei de N
join SERVICOS as S   on S.veiculo = N.Veiculo                                                                                                  #unindo com uma consulta na tabela SERVICOS
WHERE  cast(S.os_abertoem as date) = cast(NOW() as date)   and  S.os_fechadoem   NOT IS NULL        # cuja data de abertura do servico seja HOJE  e  serviço esteja fechado 

até aqui 1000 maravilha ou seja se o carro está presente, teve o servico aberto HOJE e já foi FINALIZADO  então teoricamente ele estaria LIBERADO

 

só que não!

ele pode ter outros servicos na tabela (SERVICOS) em aberto o que impediria a condição de LIBERADO.

continuando a clausula WHERE eu tinha que fazer algo do tipo... 

and   cast(S.os_abertoem as date) = cast(NOW() as date)   and  S.os_fechadoem  IS NULL   mas isso é conflitante com o where acima

resumindo

o carro aparecerá como resultado da FDQUERY se

1)Estiver na tabela NAGARAGEM  indicando que esta presente

2)Tiver pelo menos uma ordem de serviço aberta HOJE --- cast(S.os_abertoem as date) = cast(NOW() as date)

3)não tiver NENHUMA OUTRA Ordem de SErvico aberta (consultando a mesma tabela SERVICOS) 

pois pode ser que um serviço de MECANICA esteja concluida mas outro de elétrica ainda esteja em aberto.

** não SEI FAZER ISSO

 

Quem souber fazer o select  por favor...

não sei se teria que ser  um select aninhado  usando o group by... 

 

Link to post
Share on other sites

0 answers to this question

Recommended Posts

There have been no answers to this question yet

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Forum Statistics

    • Total Topics
      149192
    • Total Posts
      645447
×
×
  • Create New...