Encore un problème de doublons - SQL/NoSQL - Programmation
Marsh Posté le 03-12-2009 à 13:58:21
select upper(last_name), upper(first_name), count(identifiaint)
from latable
group by upper(last_name), upper(first_name)
having count(identifiant) > 1
Marsh Posté le 03-12-2009 à 14:48:17
Cette requête n'est pas mal du tout. Fallait y penser, moi je n'aurais pas pu
Mais elle ne fait pas exactement ce dont j'ai besoin.
En effet, elle m'indique pour chaque enregistrement le nombre d'enregistrement identique (2,3,4,...)
Exemple,
Pierre Dupon - 3
Paul Jacques - 2
Francis Lalane - 7 ;-)
J'aimerais avoir toutes les infos de ces différents doublons. (comme la société, la ville,...)
Pour exemple, pouvoir voir les 3 enregistrements Pierre Dupon pour que je puisse voir lequel est le bon, et lesquelles je peux supprimer.
Et ce, en fonction d'élément en plus, comme la ville et la société.
Ce n'est pas grand chose, mais voici la base du code reçu par Fred999 (merci à lui) avec ville et société... Peut-être que ça vous aidera un tout petit peu à m'aider
Code :
|
Encore merci d'avance
Marsh Posté le 03-12-2009 à 15:08:49
Tu peux toujours rajouter société et ville dans la clause GROUP BY pour affiner les résultats (dans le premier post, tu ne parles que de nom et prénom).
Sinon, c'est à toi de partir de la liste des doublons (nom, prénom) pour ensuite effectuer le traitement élément par élément...
Marsh Posté le 03-12-2009 à 15:12:14
Fred999 a écrit : Sinon, c'est à toi de partir de la liste des doublons (nom, prénom) pour ensuite effectuer le traitement élément par élément... |
Ou tout seulement la jouer barbare avec un select * from ttruc where id in (select...)...mais c'est laid.
Marsh Posté le 03-12-2009 à 15:14:02
Il n'y a donc pas de réelle méthode pour sortir uniquement les éléments en double d'une DB ? (en laissant les éléments unique de coté)
Marsh Posté le 03-12-2009 à 15:17:16
skeye > ouais c'est ce que je voulais dire
Tout dépend de ce que tu appelles "élément" : i.e. comment tu définis l'unicité dans ta table, il n'y a pas de règle en la matière : comme on l'a dit, au début tu ne parles que de nom/prénom, ensuite tu parles de nom/prénom/société/ville. Ce n'est pas la même chose.
Pour blinder le truc à l'avenir, je te conseille d'effectuer un contrôle sur l'unicité AVANT l'insertion ; mais bon, je suppose que tu as récupéré le truc tel quel...
Marsh Posté le 03-12-2009 à 15:32:39
jedijul a écrit : Il n'y a donc pas de réelle méthode pour sortir uniquement les éléments en double d'une DB ? (en laissant les éléments unique de coté) |
En général si t'as des éléments réellement en double c'est que tu t'es planté à la conception de la base. Avoir deux fois exactement la même info n'a pas d'intérêt.
...et si, il y en a, cf la requête de fred999.
Marsh Posté le 03-12-2009 à 12:33:48
Voilà, je bosse en SQL avec PhpMyAdmin.
J'ai une grosse table et rien que ça.
En faisant un truc du genre:
Je me retrouve avec une belle table sans doublons.
En effet, en utilisant upper (ou lower), j'enlève (enfin je pense) un problème de casse, ce qui me permet de vraiment enlever tous les doublons.
Cependant, j'aimerais pouvoir faire une requête qui m'affiche tous les champs en doubles et pas les champs qui ne sont pas en double.
Je cherche à avoir cette base pour que je puisse bosser dessus et la nettoyer... manuellement.
Je reconnais ne pas avoir trop d'idées...
Si vous avez de quoi m'aider, d'avance... MERCI !!!!