Logo du forum
 

Forum TTH-News

| 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 :
1030 (0.17 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 :
23232 (3.54 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 :
1030 (0.17 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 -
Torasme
Sage
Membre # 21727

 Avatar du membre
Lieu : Thonon les bains

Messages :
1242 (0.25 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 ;)
----------
Core i7 4790K + NH-U9B / MSI Z97 Gaming 5 / Gigabyte GTX 1080ti Aorus Extreme Edition / G.Skill Extreme3 Sniper 4x4Go PC17000 Cas 9 / SSD Samsung 840 evo 512Go - SSD Crucial M4 128Go - WD Blue caviar 1To / DVD-RW LG / Alim : Seasonic G-750 / Boîtier Antec P193
Windows 10 x64
- Haut de page -
LaJoub
Sage
Membre # 4781

 Avatar du membre
Lieu : Lucé (28)

Messages :
1030 (0.17 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 -
Torasme
Sage
Membre # 21727

 Avatar du membre
Lieu : Thonon les bains

Messages :
1242 (0.25 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 ;)
----------
Core i7 4790K + NH-U9B / MSI Z97 Gaming 5 / Gigabyte GTX 1080ti Aorus Extreme Edition / G.Skill Extreme3 Sniper 4x4Go PC17000 Cas 9 / SSD Samsung 840 evo 512Go - SSD Crucial M4 128Go - WD Blue caviar 1To / DVD-RW LG / Alim : Seasonic G-750 / Boîtier Antec P193
Windows 10 x64
- Haut de page -
chriscool007
Membre hyperactif
Membre # 10738

 Avatar du membre
Lieu : Paris

Messages :
247 (0.04 par jour)


Score :

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

Utilise le mot clé IGNORE :
INSERT IGNORE INTO Table1
select * from Table2

Les données de la tables 2 déjà présentes dans la table 1 seront ignorées.
----------
IBM T60 T5600(1.83GHz), 2GB RAM, SSD 60Go, 14.1in 1400x1050 LCD, ATI X1300
- Haut de page -
B2000
Administrateur
Membre # 185

 Avatar du membre
Lieu : France/Poitiers/juste à côté...

Messages :
9757 (1.45 par jour)




Message du 14-03-2010 @ 18:58   Afficher le profil   Envoyer un message privé   Editer le message   Citer le message      Afficher l'adresse IP   Alerter les modérateurs   

chriscool007 a écrit

Utilise le mot clé IGNORE :
INSERT IGNORE INTO Table1
select * from Table2

Les données de la tables 2 déjà présentes dans la table 1 seront ignorées.



ca doit etre un peu tard :D

cependant, si on avait eu les descriptions des 2 tables et les champs a recuperer...
----------
Intel i5 8600K | Noctua NH-U14S | Asus Prime Z370-P | Ballistix Sport LT 16Go DDR4-2666MHz | PNY GeForce GTX 1060 XLR8 OC 6 Go | SAMSUNG 840 Pro 256Go | Western Digital WD Blue 1To | Sony AD-7280S | Corsair STRAFE RGB | Roccat Kova | SteelSeries QcK | Corsair Gaming Void USB | iiyama ProLite E2472HDD

Ryzen 7 1800x | MSI X370 Gaming Pro Carbon | 2x 8Go DDR4 | MSI GeForce 1060GTX 3Go | SAMSUNG 960Pro NVME 512Go | SAMSUNG 840 Pro 512Go | LG 34um95 3440x1440 34" | 2x SAMSUNG SyncMaster SA450 1920x1200 24" | Clavier Lenovo Ultraslim sans fil | Souris Logitech MX Anywhere 2

Lenovo T430s : i5 3320m | 2x8Go | Toshiba 120Go | station Mini Dock serie 3

Nexus 6 64Go Android 7.1.1 | Garmin Forerunner 720XT | Nikon COOLPIX S9200 + Transcend SDHC 8GB | Canon PIXMA IP4850 | ADSL Freebox Révolution

Pour dialoguer en live, le chat TTH ou par mIRC sur irc://porsche.webchat.org:6667/tt-hardware

Rejoignez la team EBuyClub TTH !!!

Un jour j'ai mangé une pomme...
- Haut de page -
chriscool007
Membre hyperactif
Membre # 10738

 Avatar du membre
Lieu : Paris

Messages :
247 (0.04 par jour)


Score :

Message du 14-03-2010 @ 19:43   Afficher le profil   Envoyer un message privé   Editer le message   Citer le message      Afficher l'adresse IP   Alerter les modérateurs   

lol en effet je sais pas pourquoi je me suis retrouvé à répondre sur ce post :)
----------
IBM T60 T5600(1.83GHz), 2GB RAM, SSD 60Go, 14.1in 1400x1050 LCD, ATI X1300
- Haut de page -
LaJoub
Sage
Membre # 4781

 Avatar du membre
Lieu : Lucé (28)

Messages :
1030 (0.17 par jour)




Message du 15-03-2010 @ 3:05   Afficher le profil   Envoyer un message privé   Editer le message   Citer le message      Afficher l'adresse IP   Alerter les modérateurs   

Merci pour vos réponses je m'en occupe dès que je rentre en métropole car où je suis actuelle je rencontre un petit soucis de connexion à mes bases.
----------
- Haut de page -


Aller dans le forum :  

Plan du forum | Contacter l'administrateur

Powered by SoulBB 3.0.1
© Soulmanto, 2003-2010

Valid XHTML 1.0 Transitional

Page générée en 0.071 secondes