fr3br0 Posté 26 Octobre 2007 Posté 26 Octobre 2007 Bonjour, Soit la table suivante comportant 2 champs ID et VALEUR ID______VALEUR 1________10 2________20 3________27 4________30 5________31 6________40 7________42 8________50 Je désire supprimer les enregistrements dont l'écart sur VALEUR est < 10 (donc suppression des ID 3,5 et 7) Tout ceci directement en MySql (sans traitement php) Cela ne doit pas être compliqué ... mais je n'y parviens pas Merci de vos réponses
marcb Posté 26 Octobre 2007 Posté 26 Octobre 2007 Bonsoir, Si tu veux sélectionner tous ceux dont l'écart avec le précédant est inférieur à 10, c'est ça : SELECT t2.ID FROM matable AS t1, matable AS t2WHERE (t1.ID + 1) = t2.IDAND ((t2.VALEUR - t1.VALEUR) < 10) Je te laisse deviner pour faire le DELETE. Maintenant ça ne semble pas complètement coller à ton besoin car tu souhaites garder le 4 et le 6, alors que l'écart est inférieur à 10 avec le précédant est bien inférieur à 10. Certes il ne l'est plus *après* avoir supprimé les ID 3, 5 et 7 mais je ne vois pas comment faire une requête qui puisse tenir compte de ça... Ceci étant, si tu ne veux garder que les multiples de 10, tu t'en sors avec un modulo. Pourrais-tu préciser l'algorithme de suppression des ID (quitte à écrire le code en php par exemple) pour que l'on te dise si c'est réalisable en SQL pur ? M
fr3br0 Posté 2 Novembre 2007 Auteur Posté 2 Novembre 2007 Salut, cela correspond parfaitement à mon besoin Par contre il se peut que les ID ne soient pas forcément classées dans un ordre croissant au contraire des VALEURS qui sont très par en ordre ASCendant Je ne sais pas si le résultat sera le même ?
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant