J'ai une table qui m'aide à garder une trace des temps de retard entre mes esclaves et le maître. Ma question est comment puis-je élaborer une déclaration de sélection qui:
1. me donne les dernières valeurs de retard, sans répéter (ou sauter) les adresses IP
2. n'a pas besoin d'être mis à jour si j'ajoute des serveurs supplémentaires, ou comme les serveurs ne répondent plusInstruction de sélection de requête imbriquée MySQL
Le but de cette requête est de me montrer quels serveurs sont disponibles pour travailler, et de me donner une estimation approximative de leur niveau de fonctionnement. Les serveurs qui ne sont pas opérationnels ne devraient pas apparaître dans les résultats. Je cours un script pour évaluer les temps de retard comme CLI chaque minute, donc si je pourrais limiter les enregistrements possibles retournés à la dernière minute et demi, cela devrait être assez bon pour me dire quels serveurs étaient en place la dernière fois qu'ils étaient interrogé.
Le tableau ressemble à ceci (colonnes rebaptisés pour protéger les innocents):
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
ip VARCHAR(20) NOT NULL ,
sent TIMESTAMP NOT NULL ,
delay DECIMAL (7,4) NOT NULL ,
status VARCHAR(100) NOT NULL ,
execution_time` DECIMAL (7,4)NOT NULL ,
deleted` TINYINT NOT NULL ,
Toute aide serait appréciée.
Eh bien cela prouve que j'ai encore beaucoup à apprendre, étant donné que je ne savais même pas que c'était possible ... ma requête a fini par ressembler à ceci: SELECT delay, ip FROM status, (SELECT id , max (envoyé) FROM groupe de statut par ip) inertable O WH innertable.id = status.id Cela me donne beaucoup plus à google ... merci. –
Désolé, je pensais que c'était correct, mais je me suis rendu compte qu'il ne restait que mes deux premiers enregistrements. –
La requête interne (sélectionnez id, max (envoyé), ip du groupe nom_table par ip) vous donne les résultats attendus. Je suppose que vous voulez une ligne dans ce jeu de résultats pour chaque adresse IP. Est-ce exact? – MikeTheReader