Usuário com melhor resposta
Não sei como buscar o ID

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.
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;
-
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
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;
-
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
* FROM #TabChamadoSELECT
* FROM #TabUsuariodrop
table #TabChamadodrop
table #TabUsuarioEdu
,Segue um exemplo que criei aqui pra você entender melhor
. No lugar do Getdate() você vai colocar a data referenteao 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 anosQualquer dúvida pode postar que respondo!! Espero que meu exemplo posso ter te ajudado
..Abraço
,chapolin
.rio@gmail.com -
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