2009-12-10 3 views
1

Voici ma table structure:
monResults:requête pour obtenir les étapes conduisant S'ils sont assez proches

Int id (10)
monDateTime Datetime()
typeId int (10)

I besoin d'une requête pour obtenir tous les monRésultats qui ont monDateTimes consécutifs qui sont distants de moins de 1 minute et ont le même typeId. Je veux être en mesure d'obtenir X nombre de ces événements. La plupart du temps, je ne sais pas comment ajouter la condition pour que les résultats consécutifs soient distants de moins d'une minute.

Répondre

0

Avez-vous essayé de le faire? Souhaitez-vous transmettre un ID de type et demander à la requête de renvoyer tous les ID distants de moins d'une minute? Le problème est que vous obtiendrez juste une liste triée, vous devrez toujours l'analyser dans un programme, comme vous le ferez, dans un exemple très artificiel, où monDateTime est une variante d'un timestamp d'unité, pour la facilité de taper.

id=1, monDateTime=3 
id=5, monDateTime=57 
id=2, monDateTime=63 
id=3, monDateTime=120 

Donc, vous devez déterminer dans votre application que les deux premiers sont un groupe, mais le deuxième et le troisième sont un groupe, donc id = 2 et 5 sont en deux groupes.

Si vous faites une boucle dans un programme et déclarez que je veux tous les identifiants qui sont dans la minute d'un id et typeId spécifique alors vous pouvez l'organiser dans le programme.

Ensuite, vous pouvez simplement utiliser la fonction TimeDiff pour soustraire votre identifiant spécifique et les ids dans la base de données: http://dev.mysql.com/doc/refman/5.0/en/date-and-time-functions.html#function_timediff

0
SELECT * 
FROM (
     SELECT (@typeID = typeID AND @pdt >= monDateTime - INTERVAL 1 MINUTE) AS con, 
       @typeID := typeID, 
       @pdt := monDateTime 
     FROM (
       SELECT @typeID := NULL, 
         @pdt := NULL 
       ) vars, 
       mytable 
     ORDER BY 
       monDateTime 
     ) q 
WHERE con 
Questions connexes