Logo du forum
 

Forum TT-Hardware

| Inscription | | Recherche | | FAQ | | Accueil | | Liste des membres |
| Calendrier |
 
Vous n'êtes pas identifié! [Connexion] ou [Inscription] Forum » Programmation » [SQL / PL-SQL / SGBD] » Fusionner 2 tables SQL
Login Mot de passe

2 visiteurs sur ce topic (0 membre(s), 2 invité(s) )


Auteur
Sujet : Fusionner 2 tables SQL
LaJoub
Sage
Membre # 4781

 Avatar du membre
Lieu : Lucé (28)

Messages :
1029 (0.36 par jour)




Message du 28-01-2010 @ 8:09   Afficher le profil   Envoyer un message privé   Editer le message   Citer le message      Afficher l'adresse IP   Alerter les modérateurs   


Bonjour,


Je cherche à fusionner 2 tables SQL afin de réunir les données qu'elles contiennent. J'ai donc utilisé une commande du type:

INSERT INTO Table1
select * from Table2

Mais le problème c'est que certaines entrées sont identiques dans les tables donc j'ai ce message d'erreur:

#1062 - Duplicate entry '118473' for key 1

Pourriez-vous m'aider?

Merci d'avance.
----------
- Haut de page -
icy
Administrateur
Membre # 871

 Avatar du membre
Lieu : Bxl

Messages :
18553 (5.32 par jour)


Score :

Message du 28-01-2010 @ 8:16   Afficher le profil   Envoyer un message privé   Editer le message   Citer le message      Afficher l'adresse IP   Alerter les modérateurs   

3 solutions facile:
- fusion table1 et 2 dans table3. Dnas ton select ne met pas l'id mais laisse le générer par la db.
- rajouter une collone "from" (par exemeple) a la pk de table1. Avec une valeur 1 quand c'est table 1, 2 quand c'est table 2.
- insert into table1 select * from table2 where table2.id not exists (select id table1)(fin truc du genre)
----------
"May He touch you with His Noodly Appendage"
- Haut de page -
LaJoub
Sage
Membre # 4781

 Avatar du membre
Lieu : Lucé (28)

Messages :
1029 (0.36 par jour)




Message du 28-01-2010 @ 8:32   Afficher le profil   Envoyer un message privé   Editer le message   Citer le message      Afficher l'adresse IP   Alerter les modérateurs   

Merci pour ta réponse.


Désolé pour les questions cons mais je n'y connais absolument rien et on m'a filé un site a géré donc j'essaye.



Donc sur tes conseils, j'ai mis un truc comme ça:

insert into coordonnee
select * from Coordonnee where coordonnee`ID` not exists

et j'ai ça:

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'exists' at line 2

Les 2 autres solutions proposées j'ai pas tout compris.

[message édité le 28-01-2010 @ 10:13 Par LaJoub]
----------
- Haut de page -
Maestro56
Master
Membre # 21727

 Avatar du membre
Lieu : Issy (92)

Messages :
911 (0.5 par jour)




Message du 28-01-2010 @ 13:42   Afficher le profil   Envoyer un message privé   Editer le message   Citer le message      Afficher l'adresse IP   Alerter les modérateurs   


table2 est ta table de destination, et table1 la table de départ.

Insert into table2
select * from table1
where not exists (select 1 from table1, table2 where table1.id = table2.id)

ça doit suffir pour l'insert ;)
----------
QX9650 + NH-U12P / Asus P5Q Pro / Leadtek 8800GTS 320Mo / G.Skill Extreme Series PI 2x2Go PC2-6400 / Raid 0 : 2x 40Go SSD Kingston - Hitachi Deskstar 320Go / DVD-RW LG / Alim : Corsair HX-520 / Boîtier Antec P193
Windows 7 x64
- Haut de page -
LaJoub
Sage
Membre # 4781

 Avatar du membre
Lieu : Lucé (28)

Messages :
1029 (0.36 par jour)




Message du 28-01-2010 @ 20:36   Afficher le profil   Envoyer un message privé   Editer le message   Citer le message      Afficher l'adresse IP   Alerter les modérateurs   

0 enregistrement(s) inséré(s). ( Traitement en 0.0055 sec. )

Insert into scan5
select * from scan
where not exists (select 1 from scan, scan5 where scan.id = scan5.id)

Pourtant j'ai bien appliqué la formule indiquée mais il m'ajoute rien!

Merci à toi pour ton aide.
----------
- Haut de page -
Maestro56
Master
Membre # 21727

 Avatar du membre
Lieu : Issy (92)

Messages :
911 (0.5 par jour)




Message du 29-01-2010 @ 13:01   Afficher le profil   Envoyer un message privé   Editer le message   Citer le message      Afficher l'adresse IP   Alerter les modérateurs   

Il faut que tu remplaces dans ma requête les ".id" par le nom du champs qui te bloque (erreur : #1062 - Duplicate entry '118473' for key 1)

Ce que je t'ai donné permet d'insérer dans la 2ème table toutes les lignes de la table de départ qui ont un id différent de celle de destination, à supposer que ce soient des clés primaires (donc unique dans chaque table).

Si tu n'y arrives pas, je pense qu'il te faut voir les bases SQL sur des sites de développeurs.
Il y a de très bons tutoriels MySQL sur http://mysql.developpez.com/ par exemple ;)
----------
QX9650 + NH-U12P / Asus P5Q Pro / Leadtek 8800GTS 320Mo / G.Skill Extreme Series PI 2x2Go PC2-6400 / Raid 0 : 2x 40Go SSD Kingston - Hitachi Deskstar 320Go / DVD-RW LG / Alim : Corsair HX-520 / Boîtier Antec P193
Windows 7 x64
- Haut de page -


Aller dans le forum :  

Plan du forum | Contacter l'administrateur

Powered by SoulBB 3.0.1
© Soulmanto, 2003-2006

Valid XHTML 1.0 Transitional

Page générée en 0.08 secondes