Filtrer dans une requete Select

Résolu
Lemjid Messages postés 72 Statut Membre -  
Lemjid Messages postés 72 Statut Membre -
J'ai la requête suivante :

SELECT
gs.tracker Date,
gs.lat V1,gs.lng V2,
gs.param->"$.io1" Var3
FROM objects g,objects_data_352848020302291 gs WHERE g.name='4000'
AND gs.tracker BETWEEN '2020-07-23 10:15:14' AND '2020-07-23 10:59:04' ;

Le résultat est :


J'ai besoin d'extraire a travers cette requête seulement les valeurs qui sont coloré en jeune :

Merci d'avance pour vous aides.

6 réponses

Résumé de la discussion

La requête SQL vise à extraire, dans une plage temporelle donnée, les valeurs où Var3 passe à 1 puis retombe à 0, avec des critères sur io1 et la vitesse. Des propositions visent à définir le démarrage et l’arrêt du véhicule en utilisant io1=1 et vitesse>6 pour démarrer, puis io1=0 et vitesse=0 pour arrêter, afin d’obtenir les lignes vertes. D'autres échanges évoquent des approches techniques et des requêtes alternatives pour isoler le premier passage à 1 et le retour à 0 à partir des lignes précédentes. Une nuance utile est que certains indiquent que l'identifiant n'est pas fiable comme référence et que le départ doit être identifié par IO1=1, sans dépendre de l'ID.

Généré automatiquement par IA
sur la base des meilleures réponses
  1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
     
    Bonjour
    Dans la requête tu rajoutes une condition sur V1 , V2 .. ou ...
    Ben ... On ne sait pas.

    Comment choisis tu les lignes que tu veux récupérer ? Sur quel critère te bases tu ?

    Et.. les "extraire".. c'est à dire ?

    0
    1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
       
      J'ai l'impression que tu cherches à récupérer les valeurs lorsqu'elles changent d'une ligne à l'autre sur la colonne V3
      0
    2. Lemjid Messages postés 72 Statut Membre > jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention  
       
      Bonjour ,
      Merci pour votre retour.
      Le critère :
      La 1ier ligne : c'est le 1ier valeur dont Var3=1
      La 2ime ligne : c'est le 1ier valeur dont Var3 devient égale à zéro
      La 3ime ligne : c'est le 1ier valeur dont Var3 devient égale à 1
      La 3ime ligne : c'est le 1ier valeur dont Var3 devient égale à zéro ......
      0
    3. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830 > Lemjid Messages postés 72 Statut Membre
       
      Donc c'est bien ce que je t'ai indiqué ... au changement de valeur de V3...
      0
    4. Lemjid Messages postés 72 Statut Membre > jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention  
       
      Oui exactement mais je sais pas comment le faire ?
      est-il possible de m'aider stp
      0
  2. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 588
     
    bonjour,
    peux-tu nous montrer ce que contiennent tes deux tables?
    0
  3. Lemjid Messages postés 72 Statut Membre
     
    Bonjour,
    on a pas besoin de contenu des deux tables ,
    Je veux appliquer les critères suivantes sur la requête en haut
    Les critères :
    La 1ier ligne : c'est le 1ier valeur dont Var3=1
    La 2ime ligne : c'est le 1ier valeur dont Var3 devient égale à zéro
    La 3ime ligne : c'est le 1ier valeur dont Var3 devient égale à 1
    La 3ime ligne : c'est le 1ier valeur dont Var3 devient égale à zéro ......
    0
  4. Lemjid Messages postés 72 Statut Membre
     
    Rebonjour ;
    J'ai réfléchi finalement a stocker les valeurs de la 1ier requête dans un nouvelle table Data_copy dans la base de données comme suit :

    Le problème que j'arrive pas a récupérer les valeurs exactement demandées :
    Toujours je souhaite récupérer les valeurs en jeunes :
    0
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      moi j'essaierais ainsi:
      select idc, dates, io1c as io1, lat, lng 
      from 
      (select d1.id as idc, d1.io1 as io1c, d1.dates, d1.lat, d1.lng, max(d2.id) as idp
      from Data_copy as d1, Data_copy as d2
      where d1.id > d2.id) as cp,
      Data_copy as dp
      where dp.id = cp.idp
      and dp.io1 <> cp.io1
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Lemjid Messages postés 72 Statut Membre
     
    Merci pour votre retour ,
    J'ai ce message d'erreur :
    0
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      select cp.idc as id, cp.dates, cp.io1c as io1, cp.lat, cp.lng 
      from 
      (select d1.id as idc, d1.io1 as io1c, d1.dates, d1.lat, d1.lng, max(d2.id) as idp
      from Data_copy as d1, Data_copy as d2
      where d1.id > d2.id
      group by d1.id, d1.io1, d1.dates, d1.lat, d1.lng) as cp,
      Data_copy as dp
      where dp.id = cp.idp
      and dp.io1 <> cp.io1c


      EDIT: erreur dernière ligne.

      RE-EDIT: mieux avec un GROUP BY
      0
    2. Lemjid Messages postés 72 Statut Membre > yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention  
       
      Cette requête est correcte seulement pour cette exemple c-à-d qu'il filtre correctement les valeurs dont l'ID =(6,86,126 et136) dans l'exemple de #16.
      Par contre lorsqu'on change les valeurs de la requête select qui donne :


      La requête commence par la ligne dont l'id =6 or que c'est complétement incorrecte car c'est une STOP puisque IO=0 et IO : c'est un contacton lorsque IO=1 et contactoff lorsque IO=0 et toujours il faut commencer par Start puis Stop ,Start puis Stop , Start puis Stop ...

      Merci pour votre aide de nouveau :( pour que la requête fonctionne dans tous les cas .
      0
    3. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > Lemjid Messages postés 72 Statut Membre
       
      la requête fait exactement ce que tu as demandé: sélectionner les enregistrements dont la valeur IO1 change.
      tu gagnerais beaucoup de temps et d'énergie si tu expliquais précisément, dés le départ, le résultat que tu cherches.
      0
    4. Lemjid Messages postés 72 Statut Membre > yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention  
       
      Oui ,j'ai oublié de mentionner qu'il faut toujours commencer par les IO1 =1 puis IO1 =0 et puis IO1 =1 et puis IO1 =0 ...
      0
    5. Lemjid Messages postés 72 Statut Membre > yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention  
       
      @yg_be : Est-il possible de possible de modifier stp la requête de #19 pour que j'aura la bonne résultat ?
      0
  7. Lemjid Messages postés 72 Statut Membre
     
    La nouvelle requête retourne vide :(
    0
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       
      même avec le GROUP BY?
      si oui, que retourne ceci:
      select d1.id as idc, d1.io1 as io1c, d1.dates, d1.lat, d1.lng, max(d2.id) as idp
      from Data_copy as d1, Data_copy as d2
      where d1.id > d2.id
      group by d1.id, d1.io1, d1.dates, d1.lat, d1.lng
      0
    2. Lemjid Messages postés 72 Statut Membre > yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention  
       
      La requête retourne toute les lignes presque : Bon c'est vrai c'est difficile de comprendre sans le schéma de la base réel :
      Voici ma table :

      CREATE TABLE IF NOT EXISTS `data_copy` (
      `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
      `dates` datetime DEFAULT NULL,
      `io1` int(11) DEFAULT NULL,
      `lat` double DEFAULT NULL,
      `lng` double DEFAULT NULL,
      PRIMARY KEY (`id`)
      ) ENGINE=MyISAM AUTO_INCREMENT=141 DEFAULT CHARSET=utf8mb4;


      INSERT INTO `data_copy` (`id`, `dates`, `io1`, `lat`, `lng`) VALUES
      (1, '2020-07-23 10:15:14', 0, 36.817542, 10.186166),
      (2, '2020-07-23 10:15:14', 0, 36.817542, 10.186166),
      (3, '2020-07-23 10:15:14', 0, 36.817542, 10.186166),
      (4, '2020-07-23 10:15:14', 0, 36.817542, 10.186166),
      (5, '2020-07-23 10:15:14', 0, 36.817542, 10.186166),
      (6, '2020-07-23 10:16:50', 1, 36.817536, 10.18616),
      (7, '2020-07-23 10:16:50', 1, 36.817536, 10.18616),
      (8, '2020-07-23 10:16:50', 1, 36.817536, 10.18616),
      (9, '2020-07-23 10:16:50', 1, 36.817536, 10.18616),
      (10, '2020-07-23 10:16:50', 1, 36.817536, 10.18616),
      (11, '2020-07-23 10:18:50', 1, 36.81591, 10.185574),
      (12, '2020-07-23 10:18:50', 1, 36.81591, 10.185574),
      (13, '2020-07-23 10:18:50', 1, 36.81591, 10.185574),
      (14, '2020-07-23 10:18:50', 1, 36.81591, 10.185574),
      (15, '2020-07-23 10:18:50', 1, 36.81591, 10.185574),
      (16, '2020-07-23 10:20:50', 1, 36.815805, 10.18501),
      (17, '2020-07-23 10:20:50', 1, 36.815805, 10.18501),
      (18, '2020-07-23 10:20:50', 1, 36.815805, 10.18501),
      (19, '2020-07-23 10:20:50', 1, 36.815805, 10.18501),
      (20, '2020-07-23 10:20:50', 1, 36.815805, 10.18501),
      (21, '2020-07-23 10:22:51', 1, 36.815734, 10.184591),
      (22, '2020-07-23 10:22:51', 1, 36.815734, 10.184591),
      (23, '2020-07-23 10:22:51', 1, 36.815734, 10.184591),
      (24, '2020-07-23 10:22:51', 1, 36.815734, 10.184591),
      (25, '2020-07-23 10:22:51', 1, 36.815734, 10.184591),
      (26, '2020-07-23 10:24:51', 1, 36.817392, 10.18353),
      (27, '2020-07-23 10:24:51', 1, 36.817392, 10.18353),
      (28, '2020-07-23 10:24:51', 1, 36.817392, 10.18353),
      (29, '2020-07-23 10:24:51', 1, 36.817392, 10.18353),
      (30, '2020-07-23 10:24:51', 1, 36.817392, 10.18353),
      (31, '2020-07-23 10:26:51', 1, 36.81617, 10.180122),
      (32, '2020-07-23 10:26:51', 1, 36.81617, 10.180122),
      (33, '2020-07-23 10:26:51', 1, 36.81617, 10.180122),
      (34, '2020-07-23 10:26:51', 1, 36.81617, 10.180122),
      (35, '2020-07-23 10:26:51', 1, 36.81617, 10.180122),
      (36, '2020-07-23 10:28:51', 1, 36.814467, 10.17846),
      (37, '2020-07-23 10:28:51', 1, 36.814467, 10.17846),
      (38, '2020-07-23 10:28:51', 1, 36.814467, 10.17846),
      (39, '2020-07-23 10:28:51', 1, 36.814467, 10.17846),
      (40, '2020-07-23 10:28:51', 1, 36.814467, 10.17846),
      (41, '2020-07-23 10:30:51', 1, 36.813606, 10.177695),
      (42, '2020-07-23 10:30:51', 1, 36.813606, 10.177695),
      (43, '2020-07-23 10:30:51', 1, 36.813606, 10.177695),
      (44, '2020-07-23 10:30:51', 1, 36.813606, 10.177695),
      (45, '2020-07-23 10:30:51', 1, 36.813606, 10.177695),
      (46, '2020-07-23 10:32:51', 1, 36.814048, 10.17543),
      (47, '2020-07-23 10:32:51', 1, 36.814048, 10.17543),
      (48, '2020-07-23 10:32:51', 1, 36.814048, 10.17543),
      (49, '2020-07-23 10:32:51', 1, 36.814048, 10.17543),
      (50, '2020-07-23 10:32:51', 1, 36.814048, 10.17543),
      (51, '2020-07-23 10:34:48', 1, 36.813654, 10.169695),
      (52, '2020-07-23 10:34:48', 1, 36.813654, 10.169695),
      (53, '2020-07-23 10:34:48', 1, 36.813654, 10.169695),
      (54, '2020-07-23 10:34:48', 1, 36.813654, 10.169695),
      (55, '2020-07-23 10:34:48', 1, 36.813654, 10.169695),
      (56, '2020-07-23 10:35:20', 1, 36.810982, 10.16504),
      (57, '2020-07-23 10:35:20', 1, 36.810982, 10.16504),
      (58, '2020-07-23 10:35:20', 1, 36.810982, 10.16504),
      (59, '2020-07-23 10:35:20', 1, 36.810982, 10.16504),
      (60, '2020-07-23 10:35:20', 1, 36.810982, 10.16504),
      (61, '2020-07-23 10:36:05', 1, 36.809075, 10.159855),
      (62, '2020-07-23 10:36:05', 1, 36.809075, 10.159855),
      (63, '2020-07-23 10:36:05', 1, 36.809075, 10.159855),
      (64, '2020-07-23 10:36:05', 1, 36.809075, 10.159855),
      (65, '2020-07-23 10:36:05', 1, 36.809075, 10.159855),
      (66, '2020-07-23 10:36:55', 1, 36.805008, 10.16237),
      (67, '2020-07-23 10:36:55', 1, 36.805008, 10.16237),
      (68, '2020-07-23 10:36:55', 1, 36.805008, 10.16237),
      (69, '2020-07-23 10:36:55', 1, 36.805008, 10.16237),
      (70, '2020-07-23 10:36:55', 1, 36.805008, 10.16237),
      (71, '2020-07-23 10:38:05', 1, 36.80089, 10.164686),
      (72, '2020-07-23 10:38:05', 1, 36.80089, 10.164686),
      (73, '2020-07-23 10:38:05', 1, 36.80089, 10.164686),
      (74, '2020-07-23 10:38:05', 1, 36.80089, 10.164686),
      (75, '2020-07-23 10:38:05', 1, 36.80089, 10.164686),
      (76, '2020-07-23 10:40:05', 1, 36.798845, 10.164954),
      (77, '2020-07-23 10:40:05', 1, 36.798845, 10.164954),
      (78, '2020-07-23 10:40:05', 1, 36.798845, 10.164954),
      (79, '2020-07-23 10:40:05', 1, 36.798845, 10.164954),
      (80, '2020-07-23 10:40:05', 1, 36.798845, 10.164954),
      (81, '2020-07-23 10:42:05', 1, 36.801434, 10.164492),
      (82, '2020-07-23 10:42:05', 1, 36.801434, 10.164492),
      (83, '2020-07-23 10:42:05', 1, 36.801434, 10.164492),
      (84, '2020-07-23 10:42:05', 1, 36.801434, 10.164492),
      (85, '2020-07-23 10:42:05', 1, 36.801434, 10.164492),
      (86, '2020-07-23 10:42:26', 0, 36.801421, 10.164523),
      (87, '2020-07-23 10:42:26', 0, 36.801421, 10.164523),
      (88, '2020-07-23 10:42:26', 0, 36.801421, 10.164523),
      (89, '2020-07-23 10:42:26', 0, 36.801421, 10.164523),
      (90, '2020-07-23 10:42:26', 0, 36.801421, 10.164523),
      (91, '2020-07-23 10:44:27', 0, 36.801395, 10.164525),
      (92, '2020-07-23 10:44:27', 0, 36.801395, 10.164525),
      (93, '2020-07-23 10:44:27', 0, 36.801395, 10.164525),
      (94, '2020-07-23 10:44:27', 0, 36.801395, 10.164525),
      (95, '2020-07-23 10:44:27', 0, 36.801395, 10.164525),
      (96, '2020-07-23 10:46:27', 0, 36.801418, 10.164592),
      (97, '2020-07-23 10:46:27', 0, 36.801418, 10.164592),
      (98, '2020-07-23 10:46:27', 0, 36.801418, 10.164592),
      (99, '2020-07-23 10:46:27', 0, 36.801418, 10.164592),
      (100, '2020-07-23 10:46:27', 0, 36.801418, 10.164592),
      (101, '2020-07-23 10:48:27', 0, 36.801434, 10.164607),
      (102, '2020-07-23 10:48:27', 0, 36.801434, 10.164607),
      (103, '2020-07-23 10:48:27', 0, 36.801434, 10.164607),
      (104, '2020-07-23 10:48:27', 0, 36.801434, 10.164607),
      (105, '2020-07-23 10:48:27', 0, 36.801434, 10.164607),
      (106, '2020-07-23 10:50:27', 0, 36.80143, 10.164605),
      (107, '2020-07-23 10:50:27', 0, 36.80143, 10.164605),
      (108, '2020-07-23 10:50:27', 0, 36.80143, 10.164605),
      (109, '2020-07-23 10:50:27', 0, 36.80143, 10.164605),
      (110, '2020-07-23 10:50:27', 0, 36.80143, 10.164605),
      (111, '2020-07-23 10:52:28', 0, 36.801414, 10.164598),
      (112, '2020-07-23 10:52:28', 0, 36.801414, 10.164598),
      (113, '2020-07-23 10:52:28', 0, 36.801414, 10.164598),
      (114, '2020-07-23 10:52:28', 0, 36.801414, 10.164598),
      (115, '2020-07-23 10:52:28', 0, 36.801414, 10.164598),
      (116, '2020-07-23 10:54:28', 0, 36.801408, 10.164628),
      (117, '2020-07-23 10:54:28', 0, 36.801408, 10.164628),
      (118, '2020-07-23 10:54:28', 0, 36.801408, 10.164628),
      (119, '2020-07-23 10:54:28', 0, 36.801408, 10.164628),
      (120, '2020-07-23 10:54:28', 0, 36.801408, 10.164628),
      (121, '2020-07-23 10:56:28', 0, 36.801411, 10.164647),
      (122, '2020-07-23 10:56:28', 0, 36.801411, 10.164647),
      (123, '2020-07-23 10:56:28', 0, 36.801411, 10.164647),
      (124, '2020-07-23 10:56:28', 0, 36.801411, 10.164647),
      (125, '2020-07-23 10:56:28', 0, 36.801411, 10.164647),
      (126, '2020-07-23 10:56:55', 1, 36.801411, 10.164648),
      (127, '2020-07-23 10:56:55', 1, 36.801411, 10.164648),
      (128, '2020-07-23 10:56:55', 1, 36.801411, 10.164648),
      (129, '2020-07-23 10:56:55', 1, 36.801411, 10.164648),
      (130, '2020-07-23 10:56:55', 1, 36.801411, 10.164648),
      (131, '2020-07-23 10:58:55', 1, 36.804986, 10.162534),
      (132, '2020-07-23 10:58:55', 1, 36.804986, 10.162534),
      (133, '2020-07-23 10:58:55', 1, 36.804986, 10.162534),
      (134, '2020-07-23 10:58:55', 1, 36.804986, 10.162534),
      (135, '2020-07-23 10:58:55', 1, 36.804986, 10.162534),
      (136, '2020-07-23 10:59:04', 0, 36.805504, 10.16215),
      (137, '2020-07-23 10:59:04', 0, 36.805504, 10.16215),
      (138, '2020-07-23 10:59:04', 0, 36.805504, 10.16215),
      (139, '2020-07-23 10:59:04', 0, 36.805504, 10.16215),
      (140, '2020-07-23 10:59:04', 0, 36.805504, 10.16215);
      COMMIT;


      Les lignes a récupérer sont : 6,86,126 et 136 seulement pas d'autre
      0
    3. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > Lemjid Messages postés 72 Statut Membre
       
      tu confirmes que la requête en #19 ne retourne rien?
      montre ce que retourne la requête en #21.
      0
    4. Lemjid Messages postés 72 Statut Membre > yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention  
       
      #19 : c'est correcte , je suis très désolé et merci bien pour votre aide .
      J'ai une autre question : Avez vous une idée comment je peut mettre les lignes 6 et 86 dans une seule ligne (1ier ligne) et
      la deuxième ligne contient 126 et 136 .Comme ca : Pour info j'utilise PHP

      0
    5. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > Lemjid Messages postés 72 Statut Membre
       
      en modifiant légèrement la boucle PHP.
      0