none
Não sei como buscar o ID RRS feed

  • Pergunta

  •  

    Olá amigos. Estou inicaindo na área de desenvolvimento e tenho um sistema com 2 tabelas:

     

    TabChamado

     * ID_Chamado

    < ID_Usuario

       Data

       Descricao

     

    TabUsuario

     *ID_usuario

      Nome

      .....

     

    Eu preciso fazer uma consulta de ID_Usuario que não abriram chamados no ultimos X dias. Enão sei como fazer... Alguém pode me ajudar por favor?

     

    Obrigado.

    quinta-feira, 4 de outubro de 2007 15:03

Respostas

  • tente assim

     

    select tabusuario .id_usuario, tabusuario .nome

    from tabusuario left join tabchamado on tabchamado.id_usuario = tabusuario.id_usuario

    and datediff(day,tabchamado.data,getdate) <= dias -- aqui vc. coloca a quantidade de dias

    where tabchamado.id_usuario is null

     

    abs;

     

     

    quinta-feira, 4 de outubro de 2007 16:07
  • Edu,

     

    No lugar do Inner join você coloca Left Join, por justamente ter o caso de um usuário nunca ter aberto uma solicitação. sendo assim ele entrará como não ter aberto solicitação no período destinado. O inner join pegaria todos que não tivessem porém só aqueles que abriram no mínimo uma solicitação.

     

    Desculpe-me.

     

    Abraço

    quinta-feira, 4 de outubro de 2007 16:53

Todas as Respostas

  • tente assim

     

    select tabusuario .id_usuario, tabusuario .nome

    from tabusuario left join tabchamado on tabchamado.id_usuario = tabusuario.id_usuario

    and datediff(day,tabchamado.data,getdate) <= dias -- aqui vc. coloca a quantidade de dias

    where tabchamado.id_usuario is null

     

    abs;

     

     

    quinta-feira, 4 de outubro de 2007 16:07
  •  

    CREATE TABLE #TabChamado

    (

    ID_Chamado INT,

    ID_Usuario INT,

    Data DATETIME,

    Descricao VARCHAR(100)

    )

    CREATE TABLE #TabUsuario

    (

    ID_usuario INT,

    Nome VARCHAR(100)

    )

    INSERT INTO #TabUsuario values (1,'Igor')

    INSERT INTO #TabUsuario values (2,'Edu')

    INSERT INTO #TabUsuario values (3,'Chapolin')

    INSERT INTO #TabUsuario values (4,'Forum')

    INSERT INTO #TabUsuario values (5,'Sql')

     

    INSERT INTO #TabChamado values (1,1,'20070110','teste um')

    INSERT INTO #TabChamado values (2,3,'20070630','teste dois')

    INSERT INTO #TabChamado values (3,2,'20071001','teste tres')

    INSERT INTO #TabChamado values (3,4,'20071002','teste tres')

    INSERT INTO #TabChamado values (4,5,'20071001','teste quatro')

     

    SELECT #TabChamado.ID_Usuario,#TabUsuario.Nome

    FROM #TabChamado (NOLOCK)

    INNER JOIN #TabUsuario (NOLOCK)

    ON #TabUsuario.ID_usuario = #TabChamado.ID_usuario

    WHERE DATEDIFF(DAY,#TabChamado.Data,GETDATE()) <> 3

    SELECT * FROM #TabChamado

    SELECT * FROM #TabUsuario

    drop table #TabChamado

    drop table #TabUsuario

    Edu,

    Segue um exemplo que criei aqui pra você entender melhor. No lugar do Getdate() você vai colocar a data referente

    ao período que está escolhendo e no lugar do 3 uma variável dizendo a quantidade de dias referente a consulta.

    A função datediff pode funcionar também para diferenças entre Mes e ano basta no lugar de day colocar Month para meses e year para anos

    Qualquer dúvida pode postar que respondo!! Espero que meu exemplo posso ter te ajudado..

    Abraço,

    chapolin.rio@gmail.com

     

    quinta-feira, 4 de outubro de 2007 16:34
  • Edu,

     

    No lugar do Inner join você coloca Left Join, por justamente ter o caso de um usuário nunca ter aberto uma solicitação. sendo assim ele entrará como não ter aberto solicitação no período destinado. O inner join pegaria todos que não tivessem porém só aqueles que abriram no mínimo uma solicitação.

     

    Desculpe-me.

     

    Abraço

    quinta-feira, 4 de outubro de 2007 16:53