none
QUERY Linq Duvidas RRS feed

  • Pergunta

  • Pessoal, boa noite. 

    estou com duvidas de como transformar esta query em linq, 

    select ta.IdAuto, ta.Marca, ta.Placa from Tbl_Automovel as ta

    inner join Tbl_Marca as tm on ta.IdAuto != tm.id_carro where tm.HoraI < @dthji and tm.HoraF > @dthjf and tm.DataM = @dth

    a realidade é que passando o campo DataM eu so tenho resultado se houver registros na tabala marca. 

    a minha ideia seria que ela carrega-se todos os dados da tbl_automovel caso os parametros passados pela tabela marca não atendesse 

    alguem poderia me dar uma ajuda.

    att. ricardo.

    sábado, 14 de dezembro de 2019 01:11

Respostas

Todas as Respostas

  • Deleted
    sábado, 14 de dezembro de 2019 10:17
  • Ricardo,

    Neste caso independe de seu uma query em Linq, você deve trocar o Operador da Junção, ao invês de utilizar Inner Join pode-se testar o Left ou Right Join, veja os exemplos:

    -- Irá retornar os dadados da tabela TBL_Automovel idependente da existência de dados em TBL_Marca, Utilizando Left Join --
    select ta.IdAuto, ta.Marca, ta.Placa from Tbl_Automovel as ta 
     Left join Tbl_Marca as tm on ta.IdAuto != tm.id_carro 
    where tm.HoraI < @dthji and tm.HoraF > @dthjf and tm.DataM = @dth
    Go
    
    
    -- Irá retornar os dadados da tabela TBL_Marca idependente da existência de dados em TBL_Automovel, Utilizando Right Join --
    select ta.IdAuto, ta.Marca, ta.Placa from Tbl_Automovel as ta 
     Right join Tbl_Marca as tm on ta.IdAuto != tm.id_carro 
    where tm.HoraI < @dthji and tm.HoraF > @dthjf and tm.DataM = @dth
    Go
    
    Espero ter ajudado.


    Pedro Antonio Galvão Junior [MVP | MCC | MSTC | MIE | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados Relacional e Data Warehouse | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    sábado, 14 de dezembro de 2019 10:18
  • Bom dia José Diz.

    A ideia seria agendar os motoristas e carros disponíveis. 
    Na Tbl_Motorista tenho um cadastro basico com o nome e habilitação

    Tbl_Automovel somente a marca e placa

    não consegui inserir uma img aqui, com o resultado.

    CREATE TABLE [dbo].[Tbl_Automovel](
    [IdAuto] [int] IDENTITY(1,1) NOT NULL,
    [Marca] [varchar](50) NOT NULL,
    [Placa] [varchar](10) NOT NULL,
     CONSTRAINT [PK_Tbl_Automovel] PRIMARY KEY CLUSTERED 

    CREATE TABLE [dbo].[Tbl_Marca](
    [id_marcacao] [int] IDENTITY(1,1) NOT NULL,
    [De] [varchar](8) NOT NULL,
    [Para] [varchar](8) NOT NULL,
    [Cliente] [varchar](40) NOT NULL,
    [DataM] [date] NOT NULL,
    [id_Motorista] [int] NULL,
    [id_carro] [int] NOT NULL,
    [TempoViajem] [decimal](10, 2) NOT NULL,
    [HoraI] [time](7) NULL,
    [HoraF] [time](7) NULL,

    a minha ideia seria que a tbl_marca fosse um agendamento, assim saberia quais carros estaria disponiveis e motoristas. 

    sábado, 14 de dezembro de 2019 13:17
  • Deleted
    sábado, 14 de dezembro de 2019 13:38
  • Bom dia junior, já havia testado com left e right e o resultado era o mesmo. 

    quando a data não existia na tbl_marca ele não trazia nenhum resultado. segui o exemplo do José e funcionou, 

    como relatei na resposta que dei ao José, minha ideia seria fazer um agendamento.

    aceito sugestões, como relatei estou criando esse projeto a fim de estudos do MVC. 

    att, ricardo.

    sábado, 14 de dezembro de 2019 13:48
  • Deleted
    • Marcado como Resposta RicardoSj sábado, 14 de dezembro de 2019 15:54
    sábado, 14 de dezembro de 2019 13:58
  • José não tenho palavras para agradecer, ficou 100%. 

    Muito obrigado.

    sábado, 14 de dezembro de 2019 15:54
  • Bom dia junior, já havia testado com left e right e o resultado era o mesmo. 

    quando a data não existia na tbl_marca ele não trazia nenhum resultado. segui o exemplo do José e funcionou, 

    como relatei na resposta que dei ao José, minha ideia seria fazer um agendamento.

    aceito sugestões, como relatei estou criando esse projeto a fim de estudos do MVC. 

    att, ricardo.

    Ricardo,

    Sem problemas, eu não havia me atentando para o operador que você esta utilizando na junção neste trecho:

    joinTbl_Marca astm onta.IdAuto !=tm.id_carro

    Bem como, simplesmente não levei em consideração o uso das variáveis, que você estava utilizando como elemento para filtrar os dados. Desculpe-me, fiz uma pequena confusão (kkkk).

    Neste caso, o uso dos operadores Exists, Not Exists e em alguna casos In ou Not In podem ser aplicados.


    Pedro Antonio Galvão Junior [MVP | MCC | MSTC | MIE | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados Relacional e Data Warehouse | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]



    sábado, 14 de dezembro de 2019 18:20
  • Deleted
    sábado, 14 de dezembro de 2019 18:38
  • Junior, eu que agradeço a ajuda. não trabalho com desenvolvimento. então para mim toda a ajuda e sempre bem vinda. gosto de aprender por hobby.  e algumas vezes ajudar pessoas proximas a mim. 

    Mais uma vez obrigado.

    sábado, 14 de dezembro de 2019 18:51
  • Junior, eu que agradeço a ajuda. não trabalho com desenvolvimento. então para mim toda a ajuda e sempre bem vinda. gosto de aprender por hobby.  e algumas vezes ajudar pessoas proximas a mim. 

    Mais uma vez obrigado.

    Ricardo,

    Que bom, fico feliz, obrigado por sua consideração.


    Pedro Antonio Galvão Junior [MVP | MCC | MSTC | MIE | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados Relacional e Data Warehouse | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]

    sábado, 14 de dezembro de 2019 18:53