Filtrer dans une requete Select

Résolu/Fermé
Lemjid Messages postés 72 Date d'inscription mardi 26 février 2019 Statut Membre Dernière intervention 15 juillet 2021 - Modifié le 5 mai 2021 à 01:17
Lemjid Messages postés 72 Date d'inscription mardi 26 février 2019 Statut Membre Dernière intervention 15 juillet 2021 - 21 mai 2021 à 18:45
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

jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
Modifié le 5 mai 2021 à 07:36
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
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
5 mai 2021 à 08:59
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
Lemjid Messages postés 72 Date d'inscription mardi 26 février 2019 Statut Membre Dernière intervention 15 juillet 2021 > jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024
5 mai 2021 à 09:25
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
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650 > Lemjid Messages postés 72 Date d'inscription mardi 26 février 2019 Statut Membre Dernière intervention 15 juillet 2021
5 mai 2021 à 09:29
Donc c'est bien ce que je t'ai indiqué ... au changement de valeur de V3...
0
Lemjid Messages postés 72 Date d'inscription mardi 26 février 2019 Statut Membre Dernière intervention 15 juillet 2021 > jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024
Modifié le 5 mai 2021 à 09:53
Oui exactement mais je sais pas comment le faire ?
est-il possible de m'aider stp
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650 > Lemjid Messages postés 72 Date d'inscription mardi 26 février 2019 Statut Membre Dernière intervention 15 juillet 2021
5 mai 2021 à 09:50
0
yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024 1 476
5 mai 2021 à 08:57
bonjour,
peux-tu nous montrer ce que contiennent tes deux tables?
0
Lemjid Messages postés 72 Date d'inscription mardi 26 février 2019 Statut Membre Dernière intervention 15 juillet 2021
5 mai 2021 à 09:55
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
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
5 mai 2021 à 10:02
0
Lemjid Messages postés 72 Date d'inscription mardi 26 février 2019 Statut Membre Dernière intervention 15 juillet 2021 > jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024
5 mai 2021 à 10:37
C'est le meme lien de forum ??
0
Lemjid Messages postés 72 Date d'inscription mardi 26 février 2019 Statut Membre Dernière intervention 15 juillet 2021
Modifié le 5 mai 2021 à 13:58
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
yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024 1 476
5 mai 2021 à 14:22
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Lemjid Messages postés 72 Date d'inscription mardi 26 février 2019 Statut Membre Dernière intervention 15 juillet 2021
Modifié le 5 mai 2021 à 14:34
Merci pour votre retour ,
J'ai ce message d'erreur :
0
yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024 1 476
Modifié le 5 mai 2021 à 14:45
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
Lemjid Messages postés 72 Date d'inscription mardi 26 février 2019 Statut Membre Dernière intervention 15 juillet 2021 > yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024
Modifié le 12 mai 2021 à 16:36
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
yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024 1 476 > Lemjid Messages postés 72 Date d'inscription mardi 26 février 2019 Statut Membre Dernière intervention 15 juillet 2021
12 mai 2021 à 16:57
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
Lemjid Messages postés 72 Date d'inscription mardi 26 février 2019 Statut Membre Dernière intervention 15 juillet 2021 > yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024
Modifié le 12 mai 2021 à 18:02
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
Lemjid Messages postés 72 Date d'inscription mardi 26 février 2019 Statut Membre Dernière intervention 15 juillet 2021 > yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024
12 mai 2021 à 18:06
@yg_be : Est-il possible de possible de modifier stp la requête de #19 pour que j'aura la bonne résultat ?
0
Lemjid Messages postés 72 Date d'inscription mardi 26 février 2019 Statut Membre Dernière intervention 15 juillet 2021
5 mai 2021 à 14:42
La nouvelle requête retourne vide :(
0
yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024 1 476
5 mai 2021 à 14:49
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
Lemjid Messages postés 72 Date d'inscription mardi 26 février 2019 Statut Membre Dernière intervention 15 juillet 2021 > yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024
5 mai 2021 à 15:00
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
yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024 1 476 > Lemjid Messages postés 72 Date d'inscription mardi 26 février 2019 Statut Membre Dernière intervention 15 juillet 2021
5 mai 2021 à 15:12
tu confirmes que la requête en #19 ne retourne rien?
montre ce que retourne la requête en #21.
0
Lemjid Messages postés 72 Date d'inscription mardi 26 février 2019 Statut Membre Dernière intervention 15 juillet 2021 > yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024
5 mai 2021 à 15:27
#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
yg_be Messages postés 22720 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 23 avril 2024 1 476 > Lemjid Messages postés 72 Date d'inscription mardi 26 février 2019 Statut Membre Dernière intervention 15 juillet 2021
5 mai 2021 à 15:34
en modifiant légèrement la boucle PHP.
0