wawaanjo 0 Denunciar post Postado Novembro 17, 2013 Olá Tenho uma tabela que possui todas as viaturas que um prestador possui e todos os serviços (Ordem de Trabalho) que um prestador está fazendo no momento. Depois que o prestador finaliza essa ordem de trabalho, esse registro sai dessa tabela e vai p/ uma tabela de histórico. Na consulta que estou fazendo, como eu preciso somente das ordem de trabalho do dia, então coloco um filtro de Data buscando somente o dia atual, porém se uma viatura não realizou serviço naquele dia não traz, ou seja, minha consulta só está trazendo as viaturas que teve ordem de trabalho. Eu preciso trazer todas as viaturas e ordem de trabalho do dia para aquela viatura / e as que NÃO tiveram ordem de trabalho no dia eh para trazer também (no campo ordem de trabalho, isso deve estar null) Como faço para que minha consulta retorne também as viaturas que NÃO tiveram Ordem de trabalho?? Consulta que eu sei todos as viaturas que o prestador possui: Select placa_viatura, CNPJ_Prestador from Prestador Where CNPJ_Prestador= '0677000000123'; placa_viatura CNPJ_Prestador ABC1234 0677000000123 MNS9876 0677000000123 DHW6699 0677000000123 -- Minha consulta Select placa_viatura, CNPJ_Prestador, ordem_Trab from Prestador_Historico A Left Join Prestador B on B.placa_viatura= A.placa_viatura Where trunc(A.Data_Hora) = trunc(sysdate) And B.Pres_Cnpj = '0677000000123' order by A.Data_Hora; placa_viatura CNPJ_Prestador ordem_Trab ABC1234 0677000000123 OT001 ABC1234 0677000000123 OT002 ABC1234 0677000000123 OT003 ==> Eu preciso que na consulta retorne as placa_viatura MNS9876 e DHW6699 também. Teria que ficar assim: placa_viatura CNPJ_Prestador ordem_Trab ABC1234 0677000000123 OT001 ABC1234 0677000000123 OT002 ABC1234 0677000000123 OT003 MNS9876 0677000000123 DHW6699 0677000000123 Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Novembro 17, 2013 http://docs.oracle.com/javadb/10.6.1.0/ref/rrefsqlj18922.html Compartilhar este post Link para o post Compartilhar em outros sites
wawaanjo 0 Denunciar post Postado Novembro 17, 2013 Esse link não abre e não me ajudou :( Na minha consulta estou usando o LEFT JOIN e ainda assim não traz todas as viaturas da primeira tabela. Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Novembro 17, 2013 Tente com outer join. Pesquise a documentação da Oracle. Compartilhar este post Link para o post Compartilhar em outros sites
wawaanjo 0 Denunciar post Postado Novembro 17, 2013 Li e re-li, mas Left Outer Join não resolve. Não traz as viaturas que não teve serviço. Conceitualmente falando deveria funcionar, pois preservaria todas as informações da primeira tabela. Eu acredito que eh por questão de Data, sei lá.. Enfim.... infelizmente não funcionou. Realmente parece ser uma questão simples, mas em se tratando de tabela histórica. Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Novembro 17, 2013 Sim, pois a data fica nula e vc precisa tratar isto. Where (trunc(A.Data_Hora) = trunc(sysdate) or a.data_hora is null) Outra solucao é fazer um union com um subselect de not exits. Amanha posto uma solucao pois estou no tablet. Compartilhar este post Link para o post Compartilhar em outros sites