Bonjour à tous,
Voilà une requête qui semble être valide à première vue, sauf que MySQL ne semble pas gérer le cas d'exception adéquatement.
La table de test :
La requête posant problème
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 CREATE TABLE 'SensorsValues' ( 'sv_SensorID' int(10) unsigned NOT NULL, 'sv_Date' datetime NOT NULL, 'sv_Value' float DEFAULT NULL, PRIMARY KEY ('sv_SensorID', 'sv_Date'), ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
La sous requête retourne la valeur <NULL> car la table SensorsValues est actuellement vide. Donc la requête parent échoue et j'ai le message d'erreur suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 SELECT xDate FROM ( SELECT sv_Date AS XDate, MIN(sv_Value) AS xValue FROM SensorsValues WHERE sv_SensorID = 9999 AND sv_Date >= '2009-11-29 00:00:00' AND sv_Date <= '2009-11-29 03:59:59' ) AS XXX
Ce n'est pas normal ? Selon moi, avec un NULL, la requête parent devrait simplement relayer le NULL et voilà ? Mais ce n'est pas le cas.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 Column 'XDate' cannot be null
Quelqu'un peut m'éclairer ?
Sinon, j'essais de récupérer la date où la valeur de mon capteur à été la plus petite. Autre façon que j'ai de procéder aurait ressembler à ceci :
Mais ce n'est pas super optimal comme requête !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 SELECT sv_Date FROM SensorsValues WHERE sv_SensorID = 9999 AND sv_Date >= '2009-11-29 00:00:00' AND sv_Date <= '2009-11-29 13:59:59' ORDER BY sv_Value, sv_SensorID ASC, sv_Date LIMIT 0, 1
Merci pour votre aide.
Partager