Accueil > Forum > > > > Dédoublonner
Dédoublonner
mercredi 23 août 2006 à 18:44:35 |
Dédoublonner

ehmarc
|
Salut, Je veut dédoublonner une table (je suis sous SQL server) Donc dans un premier temps : recherche des doublons et mise dans une table temporaires : INSERT INTO %Table(MM_DOUBLON) SELECT * FROM %Table(MM_LIGNE) GROUP BY PROCESS_INSTANCE ,MM_REF1 ,MM_REF2 HAVING COUNT(*) > 1 Cette requete marcheensuite je delete les enregistrement de ma table temporaires dans la deuxieme table DELETE FROM PS_MM_LIGNE WHERE EXISTS ( SELECT t2.MM_REF1 , t2.MM_REF2 FROM PS_MM_DOUBLON t2 ,PS_MM_LIGNE t1 WHERE t1.MM_REF1 = t2.MM_REF1 AND t1.MM_REF2 = t2.MM_REF2 GROUP BY t2.MM_REF1 , t2.MM_REF2 HAVING COUNT(*) > 1) Cette requete ne marche pas aidez moi
puis je réinsère mes donnés INSERT INTO %Table(MM_LIGNE) SELECT * FROM %Table(MM_DOUBLON) Cette requete marche
++ "Aucun de nous ne sait ce que nous savons tous, ensemble." Lao Tseu inventeur du "copier coller" [8D]
|
|
jeudi 24 août 2006 à 09:51:42 |
Re : Dédoublonner

skweeky
|
Salut, Première chose, dans une clause EXISTS pas la peine de mettre quelque chose dans la clause SELECT, SELECT * est très bien dans ce cas. Deuxièmement, la requête de suppression, doit supprimer tous les enregistrements qui ont un doublon, au lieu de retirer seulement les enregistrement en trop... Comme c'est sur Access, je ne connais pas la manière idéale de faire. En général dans la table à dédoublonner on ajoute un champ, type auto-incrément (s'il y a déjà une clef primaire sur la table on utilisera celle-ci), la requête donnerait dans ce cas : DELETE FROM PS_MM_LIGNE WHERE ChampInc IN (SELECT MAX(ChampInc) FROM PS_MM_DOUBLON t2 ,PS_MM_LIGNE t1 WHERE t1.MM_REF1 = t2.MM_REF1 AND t1.MM_REF2 = t2.MM_REF2 GROUP BY t2.MM_REF1 , t2.MM_REF2 HAVING COUNT(*) > 1)) Ici on part du principe qu'il n'y a que des doublons (pas de triples, etc.), s'il y en avait il faudrait réexecuter une nouvelle fois la requête. Christian Robert - Winwise http://blogs.developpeur.org/christian/MCT - Database Development / Database Administration
|
|
jeudi 24 août 2006 à 10:54:11 |
Re : Dédoublonner

ehmarc
|
Salut,
Merci de ta réponse
Pour l'utilisation d'une clef unique j'y avais pensé (merci google) malheuresment je n'ai pas les droits necessaire pour faire un alter table (il n'y a pas de clef unique dans la base) de plus je ne suis pas sous acces mais sur MS SQL SERVER 2005 (ma souris a du glisser quand j'ai choisi le theme je trouve ca byzarre d'ailleurs...)
++
"Aucun de nous ne sait ce que nous savons tous, ensemble." Lao Tseu inventeur du "copier coller" [8D]
|
|
jeudi 24 août 2006 à 10:58:35 |
Re : Dédoublonner

skweeky
|
Ah ok... Ca devrait simplifier les choses du coups... Essaye çà :
DELETE TOP (1) FROM PS_MM_LIGNE WHERE ChampInc IN (SELECT MAX(ChampInc) FROM PS_MM_DOUBLON t2 ,PS_MM_LIGNE t1 WHERE t1.MM_REF1 = t2.MM_REF1 AND t1.MM_REF2 = t2.MM_REF2 GROUP BY t2.MM_REF1 , t2.MM_REF2 HAVING COUNT(*) > 1))
Ca doit supprimer un enregistrement à la fois. Tu mets cette requête dans une jolie boucle. Une fois qu'elle ne supprime plus rien, c'est qu'il n'y a plus de doublons.
Christian Robert - Winwise http://blogs.developpeur.org/christian/ MCT - Database Development / Database Administration
|
|
jeudi 24 août 2006 à 11:28:33 |
Re : Dédoublonner

ehmarc
|
Comme je l'ai dit au message d'avant je n'ai pas de clef primaire ou unique dans cette table c'est donc mon gros soucis il ya juste des données brute
"Aucun de nous ne sait ce que nous savons tous, ensemble." Lao Tseu inventeur du "copier coller" [8D]
|
|
jeudi 24 août 2006 à 11:36:44 |
Re : Dédoublonner

skweeky
|
Oui, mais çà n'est pas grave dans ce cas, le TOP dans le DELETE supprime le premier enregistrement ui lui tombe sous la main. Et je m'étais trompé de requête dans mon copier / coller... Avec ceci çà devrait résoudre le pb. DECLARE @count intSET @count = 1WHILE @count != 0 BEGIN DELETETOP(1) FROM PS_MM_LIGNE WHEREEXISTS( SELECT* FROM PS_MM_DOUBLON t2 ,PS_MM_LIGNE t1 WHERE t1.MM_REF1 = t2.MM_REF1 AND t1.MM_REF2 = t2.MM_REF2 GROUPBY t2.MM_REF1 , t2.MM_REF2 HAVINGCOUNT(*)> 1) SET @count =@@ROWCOUNT ENDChristian Robert - Winwise http://blogs.developpeur.org/christian/MCT - Database Development / Database Administration
|
|
jeudi 24 août 2006 à 12:02:11 |
Re : Dédoublonner

ehmarc
|
Hum le probleme c'est que quand je fait ca : DELETE FROM PS_MM_LIGNE WHERE EXISTS( SELECT * FROM PS_MM_DOUBLON t2 ,PS_MM_LIGNE t1 WHERE t1.MM_REF1 = t2.MM_REF1 AND t1.MM_REF2 = t2.MM_REF2 GROUP BY t2.MM_REF1 , t2.MM_REF2 HAVING COUNT(*)> 1)
Ca me supprime tout les enregistrements (c'est pas tres cool lol) (Ma table est plus complexe que juste MM_REF1 et MM_REF2, j'ai 7 champs à vérifier avant de dire qu'il y a un doublon) Par contre j'ai réussi a avoir ce que je voulai sur une autre requete masi c'est pas tres jolie ....
SELECT * FROM PS_MM_LIGNE WHERE MM_REF1 IN ( SELECT MM_REF1 FROM PS_MM_DOUBLON t2 ,PS_MM_LIGNE t1 WHERE t1.MM_REF1 = t2.MM_REF1 AND t1.MM_REF2 = t2.MM_REF2 GROUP BY t2.MM_REF1 , t2.MM_REF2 HAVING COUNT(*)> 1) and MM_REF2 IN ( SELECT MM_REF2 FROM PS_MM_DOUBLON t2 ,PS_MM_LIGNE t1 WHERE t1.MM_REF1 = t2.MM_REF1 AND t1.MM_REF2 = t2.MM_REF2 GROUP BY t2.MM_REF1 , t2.MM_REF2 HAVING COUNT(*)> 1)
J'ai l'impression que c'est le EXISTSqui foire J'ai du faire une connerie ....
++ "Aucun de nous ne sait ce que nous savons tous, ensemble." Lao Tseu inventeur du "copier coller" [8D]
|
|
Cette discussion est classée dans : table, t2, mm, ref1, ref2
Répondre à ce message
Sujets en rapport avec ce message
Problème de requete [ par Lamarmottedu73 ]
Bonjour, je cherche depuis ce matin comment résoudre ce problème sans trouver la moindre solution ou trace de solution.Je m'explique :J'ai une table :
probleme de comparaison de table [ par ehmarc ]
SalutJe suis sous MySQL voici ma requetejai deux table t1 et t2 qui ont en gros une soixantaine d'entrer chacunneje veut faire ressortir les champ qui
Optimiser une requete [ par ehmarc ]
Salut,Pouvez-vous me dire ce qu'il faut faire pour optimiser une requete par exemple je sais que si on fait souvent des recherches via une colonnes (s
Copier Table [ par nborges ]
salut,j´ai besoin d´une table temporaire pour des report, comme il en existe plus d´un, j´ai une table modele qu je cris si elle n´existe pas, ensuite
Verifier existence table [ par nborges ]
hello,je voudrais savoir coment je peux savoir si une table existe deja cela sur sql server avec VB.Netmerci [8D]
Drop Table [ par SuperBouly ]
Bonjour, Je désire supprimer une table sur une base Access distante.Je fais : MaRequete="DROP TABLE MaTable" , puis le programme est censé exécute
MySQL copier une table vers une autre table [ par julien__ ]
Je ne trouve aucun code source ni aide à ce sujet...Je cherche à copier une sélection d'une table MySQL dans une autre table qui n'est pas vide avec d
Optimisation d'une requête de mise à jour [ par josserand ]
Bonjour, J'ai besoin de créer des requêtes de mises à jour, appelant une sous-requête. Du genre :Code :</d
Exporter la structure d'une table dans un fichier XML structuré [ par djdiabolik ]
Bonjour,j'ai un problème à résoudre rapidement :je dois générer un fichier XML contenant la structure d'une table sous SQL Server 2000, après quelques
copier le contenu d'une table dans une autre [ par biloutte33 ]
bonjour,j'aimerais savoir quel requete faut-il que j'execute pour copier le contenu d'une table (le contenu pas les champs!) à une autre?genre par exe
Livres en rapport
|
Derniers Blogs
IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc SHAREPOINT BLOG SITE, PROBLèME D'ARCHIVESSHAREPOINT BLOG SITE, PROBLèME D'ARCHIVES par junarnoalg
Dernièrement, nous avons migré le site
myTIC
vers un nouveau serveur SharePoint 2010. Dans les contenus que nous vouloins récupérer, nous avions un certain nombre de blogs.
Nous avons utilisé les commandes Power...
Cliquez pour lire la suite de l'article par junarnoalg
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|