MySQL à l'aide de MAX() avec des clauses where
Je vais avoir quelques problèmes de création d'une requête mySQL avec PHP. Nous avons une table, appelée data_instant, avec une série de cumul des observations étant entré, appelé Count_Qty, et nous voulons extraire la précédente à déduire de l'observation pour le calcul de l'augmentation.
$result = mysql_query("SELECT *,
MAX(Record_Time)
FROM data_instant
WHERE Node_ID='$nodeID' AND Type='$type';
$row = mysql_fetch_array ($result);
Fondamentalement, je m'attends à de la max Record_Time ligne pour être retournés, mais c'est juste de la première instance qui l'a reçu. L'observation précédente, qui a la plus Record_Time (un horodatage Unix), il est donc clair pour moi pourquoi cela ne fonctionnerait pas...
- Des suppositions sauvages, est l'observation que vous attendez n'est pas sélectionnée par le OÙ des restrictions? ou est votre
Record_Time
pas réellement un type entier?
Vous devez vous connecter pour publier un commentaire.
Si vous voulez obtenir la ligne avec les dernières
Record_Time
valeur, juste trier les lignes dans l'ordre décroissant deRecord_Time
et obtenir la rangée du haut:La
where
clause sélectionne toutes les lignes correspondant à Node_ID='$nodeID' and Type='$type'.Pour chacune de ces lignes, il sera de retour tous les domaines, et le maximum de temps record.
Si vous souhaitez que la ligne avec le maximum de temps record, vous devez l'ajouter à votre
where
clause:Alors vous devriez juste demander pour cette colonne:
Ce sera le retour de la max record_time pour le node_id et le type.
Si vous avez plus que le MAX étant retourné, il faut ajouter le
GROUP BY
à votre déclaration de veiller à la bonne agrégation: