par
laul » 06 mars 2014, 12:21
Bonjour,
depuis le début de la semaine, je lutte avec une requête, voici la table :
CREATE TABLE IF NOT EXISTS `domotic_sensor` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`module_id` int(11) NOT NULL,
`sonde_type` int(10) NOT NULL,
`sonde_valeur` decimal(10,2) NOT NULL,
`sonde_unit` int(11) NOT NULL,
`valeur_temp` datetime NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=3132 ;
j'ai trouvé une requete qui fonctionne mais sature le server mysql en s'exécutant
SELECT s.id, s.sonde_valeur, s.sonde_unit, s.sonde_type, s.module_id, s.valeur_temp AS date, m.module_nom, m.module_type, m.module_ref, m.module_emplacement , u.symbole, u.nom, u.nom_lien, t.type_id, t.nom AS nom_sensor FROM domotic_sensor AS s
LEFT JOIN domotic_sensor_module AS m ON s.module_id = m.module_ref
LEFT JOIN sensor_unit AS u ON s.sonde_unit = u.unit_id
LEFT JOIN sensor_type AS t ON s.sonde_type = t.type_id
WHERE s.valeur_temp in (select max(valeur_temp) from domotic_sensor GROUP BY module_id, sonde_unit, sonde_type)
AND TO_DAYS(NOW()) - TO_DAYS(s.valeur_temp) < '1'
Affichage des lignes 0 - 13 ( 14 total, Traitement en 171.7634 sec)

lorsque je fais une requete simple genre
SELECT s . * , MAX( valeur_temp )
FROM domotic_sensor AS s
GROUP BY module_id, sonde_unit, sonde_type
LIMIT 0 , 30
je n'ai pas les derniers enregistrements, il m'affiche les première ligne de la table.
merci de votre aide

Bonjour,
depuis le début de la semaine, je lutte avec une requête, voici la table :
[sql]CREATE TABLE IF NOT EXISTS `domotic_sensor` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`module_id` int(11) NOT NULL,
`sonde_type` int(10) NOT NULL,
`sonde_valeur` decimal(10,2) NOT NULL,
`sonde_unit` int(11) NOT NULL,
`valeur_temp` datetime NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=3132 ;[/sql]
j'ai trouvé une requete qui fonctionne mais sature le server mysql en s'exécutant
[sql]SELECT s.id, s.sonde_valeur, s.sonde_unit, s.sonde_type, s.module_id, s.valeur_temp AS date, m.module_nom, m.module_type, m.module_ref, m.module_emplacement , u.symbole, u.nom, u.nom_lien, t.type_id, t.nom AS nom_sensor FROM domotic_sensor AS s
LEFT JOIN domotic_sensor_module AS m ON s.module_id = m.module_ref
LEFT JOIN sensor_unit AS u ON s.sonde_unit = u.unit_id
LEFT JOIN sensor_type AS t ON s.sonde_type = t.type_id
WHERE s.valeur_temp in (select max(valeur_temp) from domotic_sensor GROUP BY module_id, sonde_unit, sonde_type)
AND TO_DAYS(NOW()) - TO_DAYS(s.valeur_temp) < '1' [/sql]
Affichage des lignes 0 - 13 ( 14 total, Traitement en 171.7634 sec)
[url=http://zupimages.net/viewer.php?id=14/10/ccwy.jpg][img]http://zupimages.net/up/14/10/ccwy.jpg[/img][/url]
lorsque je fais une requete simple genre
[sql]SELECT s . * , MAX( valeur_temp )
FROM domotic_sensor AS s
GROUP BY module_id, sonde_unit, sonde_type
LIMIT 0 , 30[/sql]
je n'ai pas les derniers enregistrements, il m'affiche les première ligne de la table.
[url=http://zupimages.net/viewer.php?id=14/10/9uya.jpg][img]http://zupimages.net/up/14/10/9uya.jpg[/img][/url]
merci de votre aide :priere: