|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||||||
|
Membre régulier
![]() Inscription : octobre 2007 Messages : 97 ![]() |
Bonjour tlm,
Je suis débutant en mysql, et je cherche à faire un truc assez simple, j'aimerais récupérer des résultats mysql ayant des valeurs identiques. Je m'explique, j'ai une table avec plusieurs clés primaires que j'aimerais mettre à jour, malheureusement je dois remplacer plusieurs valeurs de ces clé par des valeurs identiques, mysql me renvoit donc une erreur duplicate key entry. Je veux donc effectué un SELECT sur les lignes qui posent problème en n'affichant que celle-ci, pour les modifier manuellement au cas par cas. J'aimerais un résultat qui ressemble à ça (c.f. tables ci-dessous) : Code :
Code :
Voici les tables utilisées dans mon exemple : Je met à jour id2 par rapport à la deuxième table (table_upd) matable : Code :
Code :
Merci d'avance. Toute ressemblance avec des tables ou des champs existants serait purement fortuite et involontaire. |
||||||||
|
|
00
|
|
|
#2 |
|
Membre éclairé
![]() Chef de projet MOA Inscription : décembre 2004 Messages : 561 ![]() |
Bonjour,
Sans vouloir éluder la question il me semble que le problème est plus d'ordre conceptuel que technique. L'utilisation de clés (numérique en l'occurence) primaires permet en plus de préserver l'unicité des tuples, de s'affrenchir de leur mise à jour. Pour cela il suffit d'utiliser la fonction d'incrémentation automatique de MySql. C'est alors MySql que se chargera de faire les "mises à jour". Pour répondre un peu plus à la question posée, tu dis "je dois remplacer plusieurs valeurs de ces clé par des valeurs identiques". Ce n'est pas possible. Par définition une clé primaire est unique. Tu ne pourras donc pas avoir des valeurs identiques pour une clé primaire. |
|
|
00
|
|
|
#3 |
|
Membre régulier
![]() Inscription : octobre 2007 Messages : 97 ![]() |
Oui j'avais bien pensé
Je ne veux pas forcer mysql à avoir plusieurs clés primaires identiques, je voudrais afficher les enregistrements qui posent problème pour les modifier / supprimer manuellement en contrôlant la raison de leur existence précaire. C'est donc un SELECT des champs identiques que je veux faire. |
|
|
00
|
|
|
#4 | ||
![]() ![]() ![]() Cédric DuprezInscription : avril 2002 Messages : 3 823 ![]() |
Bonjour,
Il faut être au moins en MySQL 4.1 pour que la requête suivante passe (il y a une sous-requête) : Code :
|
||
|
|
00
|
|
|
#5 | ||||
|
Membre régulier
![]() Inscription : octobre 2007 Messages : 97 ![]() |
Xtra c'est classe.
![]() Ca fonctionne bien, excepté qu'il me sort des résultats où id2 est effectivement lié à des résultat qui sont dupliqués, mais à un seul d'entre eux, ces lignes là ne me posant pas problème. Dans mon exemple ce serait : Code :
Il faudrait donc ajouté une clause GROUP BY et HAVING sur le champ id1, style : Code :
Merci beaucoup pour ton aide. A+ |
||||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com