Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
|
sql [2012/10/19 12:13] florian |
sql [2023/03/17 09:56] (Version actuelle) |
||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| ====== Exemples pratiques ====== | ====== Exemples pratiques ====== | ||
| + | ===== Suppression d'enregistrements doublons ===== | ||
| + | |||
| + | Objectif : supprimer les enregistrements doublons d'une table "métier". | ||
| + | Exemple : considérons la table //test//. | ||
| + | |||
| + | <code> | ||
| + | DELETE t1 | ||
| + | FROM test as t1, test as t2 | ||
| + | WHERE t1.DIR1 = t2.DIR1 | ||
| + | AND t1.FILENAME = t2.FILENAME | ||
| + | AND t1.ID != t2.ID | ||
| + | </code> | ||
| + | |||
| + | Nb: il est recommandé de nettoyer les tables _docpak et _fsfile (notamment) à l'aide du script nettoyertablesystemes.py | ||
| + | <code> | ||
| + | C:\>python <chemin vers répertoire des scripts>\nettoyertablesystemes.py instance 1 1 | ||
| + | </code> | ||
| + | |||
| + | Plus de précisions sur la suppression dans MySQL 4.1 peut être trouvée sur la [[http://dev.mysql.com/doc/refman/4.1/en/delete.html|doc officielle]]. | ||
| ===== Remplacement d'une chaîne de caractères par une autre. ===== | ===== Remplacement d'une chaîne de caractères par une autre. ===== | ||
| Ligne 11: | Ligne 30: | ||
| % est un caractère joker, il remplace n'importe quel caractère présent 0 ou plusieurs fois. | % est un caractère joker, il remplace n'importe quel caractère présent 0 ou plusieurs fois. | ||
| + | |||
| + | ===== Extractions de chaîne ===== | ||
| + | Dans un champ dont la valeur est de la forme **Un nom "Une chaine que l'on veut supprimer** on souhaite ne récupérer que **Un nom** | ||
| + | |||
| + | Exemple : | ||
| + | |||
| + | Pour | ||
| + | Gratien Thvernizzi" /o.First Organization/ou=Exch | ||
| + | |||
| + | On veut obtenir | ||
| + | Gratien Thvernizzi | ||
| + | | ||
| + | Voici la requête a exécuter : | ||
| + | <code>SELECT **CHAMP**,REPLACE(SUBSTRING(**CHAMP**,1,LOCATE('"',**CHAMP**,2)-2),'"','') FROM **TABLE**</code> | ||
| ===== Condition sur échéance ===== | ===== Condition sur échéance ===== | ||
| Ligne 17: | Ligne 50: | ||
| **CURDATE**() : retourne la date courante. | **CURDATE**() : retourne la date courante. | ||
| - | Exemple de condition à utiliser pour n'afficher que les enregistrements dont la date d'échéance arrive à terme dans les 7 prochains jours : | + | Exemple de condition à utiliser pour n'afficher que les enregistrements dont la date d'échéance arrive à terme dans les 30 prochains jours : |
| - | WHERE DATE_ECHEANCE < DATE( CURDATE() + 7 ) | + | WHERE DATE_ECHEANCE < DATE_ADD( CURDATE(), INTERVAL 30 DAY) |
| + | |||
| + | Exemple dans 4 mois | ||
| + | WHERE DATE_ECHEANCE < DATE_ADD( CURDATE(), INTERVAL 4 MONTH) | ||