|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre éclairé
![]() Développeur Java Inscription : mars 2003 Messages : 511 ![]() |
Bonjour!
Une petite problématique de doublon! Exemple une table T1 avec la colonne pk en clé et des valeurs une table T2 qui pointe sur T1 maintenant j'ai ce type de données T1 pk Valt1 clé1 A clé2 A T2 fk Valt2 clé1 toto clé2 tata J'ai donc un doublon dans T1 je voudrais le supprimé et ne conservé que la ligne 1 tout en remplaçant dans T2 le clé2 par clé1. Uniquement la suppression je sais faire ... mais le remplacement je sèche... Sachant que : je peux avoir plus de 2 fois la même ligne dans T1 et que je suis sous Postgres. Si vous avez des pistes je suis preneuse!!! Merci d'avance!
__________________
(Bio)informaticienne folle ... MOUWAWAWAWA Geekette fan de Marcus et de Nolife !! Jeune Maman |
|
|
00
|
|
|
#2 | ||||
|
Membre éclairé
![]() Développeur Java Inscription : mars 2003 Messages : 511 ![]() |
Bon j'ai trouvé une solution, je ne sais pas si c'est la meilleur mais je la donne toujours si ça peut aider c'est toujours ça.
Je suis donc passé par une table temporaire contenant 2 colonnes un l'id a gardé et l'autre l'id a remplacer. Imaginons donc T1 pk val 1 A 2 A 3 B 4 A 5 B T2 fk 1 2 5 Code :
correspondances id pk 1 2 1 4 3 5 Ensuite plus qu'a faire un UPDATE de la table contenant le clé étrangère avec JOINTURE sur la correpondance Code :
Code :
DELETE FROM T1 WHERE pk IN (SELECT pk FROM correspondances)
__________________
(Bio)informaticienne folle ... MOUWAWAWAWA Geekette fan de Marcus et de Nolife !! Jeune Maman |
||||
|
|
10
|
|
|
#3 |
![]() ![]() |
Bravo pour avoir trouvé par vous-même, mais si vous aviez cherché dans les tutoriels vous seriez probablement tombé sur cet article :
http://sqlpro.developpez.com/cours/doublons/#L2.1.3
__________________
Email : http://scr.im/waldar |
|
00
|
|
|
#4 | |
|
Membre éclairé
![]() Développeur Java Inscription : mars 2003 Messages : 511 ![]() |
Citation:
).Sinon si quelqu'un à une idée pour optimiser mes requêtes je suis preneuse car là sur une base moyenne ça me prend 10 bonnes minutes sachant que j'ai une très grosse base sur un des sites que je gère j'ai des sueurs froides !!
__________________
(Bio)informaticienne folle ... MOUWAWAWAWA Geekette fan de Marcus et de Nolife !! Jeune Maman |
|
|
|
00
|
|
|
#5 | ||
|
Expert Confirmé
![]() Inscription : mai 2002 Messages : 1 669 ![]() |
Bonjour,
Votre méthode ne me semble pas améliorable. Faites-vous bien un analyze de votre table temporaire avant de lancer les requêtes d'update / delete ? Rajouter un index sur votre table correspondance ne me semble pas utile vu qu'il passera surement par un table scan de votre table correspondance pour traiter ceci. Vous pouvez cepandant essayer : Code :
|
||
|
|
00
|
|
|
#6 | |
|
Membre éclairé
![]() Développeur Java Inscription : mars 2003 Messages : 511 ![]() |
Citation:
__________________
(Bio)informaticienne folle ... MOUWAWAWAWA Geekette fan de Marcus et de Nolife !! Jeune Maman |
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com