Ir para conteúdo
Fórum Script Brasil
  • 0

Select com duas condições na mesma tabela.


eKrinski

Pergunta

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 para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...