Page 1 sur 1

group by qui ne donne pas les derniers enregistrement

Posté : 06 mars 2014, 12:21
par laul
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)
Image
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.
Image

merci de votre aide :priere:

Re: group by qui ne donne pas les derniers enregistrement

Posté : 06 mars 2014, 12:36
par moogli
salut,

as tu des messages d'erreurs ?

as tu utiliser explain pour voir où se trouve les goulets qui ralentisse ta requête ?

@+

Re: group by qui ne donne pas les derniers enregistrement

Posté : 06 mars 2014, 12:39
par laul
salut moogli, je n'ai aucun message d'erreurs,

voici le resultat de l'explain


id select_type table type possible_keys key key_len ref rows Extra
1 PRIMARY s ALL NULL NULL NULL NULL 3257 Using where
1 PRIMARY m ALL NULL NULL NULL NULL 5
1 PRIMARY u ALL NULL NULL NULL NULL 6
1 PRIMARY t ALL NULL NULL NULL NULL 7
2 DEPENDENT SUBQUERY domotic_sensor ALL NULL NULL NULL NULL 3257 Using temporary; Using filesort

Re: group by qui ne donne pas les derniers enregistrement

Posté : 06 mars 2014, 12:43
par laul
mais je me demandé si y'avais pas plus simple pour afficher les derniers enregistrement groupé comme je le voudrais