Version complète: sur le forum Webmaster Hub : Comparaison et suppression d'enregistrements suivant critère
Webmaster Hub > Création et exploitation de Sites Internet > Les langages du Net > SQL
fr3br0
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 smile.gif

Merci de vos réponses
marcb
Bonsoir,

Si tu veux sélectionner tous ceux dont l'écart avec le précédant est inférieur à 10, c'est ça :
CODE
SELECT t2.ID FROM matable AS t1, matable AS t2
WHERE (t1.ID + 1) = t2.ID
AND ((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
Salut,

cela correspond parfaitement à mon besoin smile.gif

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 ?
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'information, la mise en page et les images, veuillez cliquer ici.