Bonjour,
je suis sous SQL Server 2005 et je souhaiterai afficher le nombre d'enregistrements dont le champs date est séparé de 30 minutes par Adresse IP.
Voici la requête que j'ai commencé mais elle n'est pas correcte, car elle renvoie la même valeur pour toutes les adresses IP. Et je suppose qu'il serait possible de la simplifier.
Je suis désolée car elle est brouillon, mais c'est la seule manière que j'ai trouvé de me rapprocher de ce que je voulais faire.
Voici un exemple de table, avec FK_IdSession = IdSession :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 SELECT COUNT(DateTime1Min) AS CountOfSession, AdressIP FROM ( SELECT DISTINCT MIN(DateTime1) AS DateTime1Min, DateTime2Min, AdressIP FROM ( SELECT DISTINCT DateTime1, MIN(DateTime2) AS DateTime2Min, AdressIP FROM ( SELECT DISTINCT PN1.DateTime AS DateTime1, PN2.DateTime AS DateTime2, dbo.Session.AdressIP FROM dbo.PageNavigation AS PN1 INNER JOIN dbo.Session ON PN1.FK_IdSession = dbo.Session.Id_Session CROSS JOIN dbo.Index_PageNavigation AS PN2 WHERE (DATEDIFF(minute, PN1.DateTime, PN2.DateTime) > 30) GROUP BY PN1.DateTime, PN2.DateTime, dbo.Session.AdressIP) AS A GROUP BY DateTime1, AdressIP) AS B GROUP BY DateTime2Min, AdressIP) AS C GROUP BY AdressIP
En fait avec cet exemple je voudrais le résultat :Session
--------------------
Date -- FK_IdSession
01/01/01 10:01:01 -- 1
01/01/01 10:01:02 -- 2
01/01/01 10:45:00 -- 3
01/01/01 10:45:54 -- 4
PageNavigation
-----------------------
IdSession -- AdressIP
1 -- 111.111.111.111
2 -- 111.111.111.111
3 -- 111.111.111.111
4 -- 112.112.112.112
Si vous avez d'autres questions n'hésitez pas !!Resultat
------------------------
CountOfSession -- AdressIP
2 -- 111.111.111.111
1 -- 112.112.112.112
Merci d'avance pour ceux qui voudront bien m'aider.
Lola
Partager