Posez votre question Signaler

Faire Fusionner 2 tables pour récupérer... [Résolu]

DiabloAndSab 81Messages postés 9 octobre 2007Date d'inscription - Dernière réponse le 6 avril 2012 à 19:27
Bonjour à tous,
Mon problème est le suivant il faut que je fasse fusionner 2 tables pour récupérer les enregistrements. Enfin mon but et de mettre tous les enregistrements des 2 tables dans une seule Sous MySql.
Merci d'avance à ceux qui pourront m'aider...
Lire la suite 

Faire Fusionner 2 tables pour récupérer »

15 réponses
Réponse
+1
moins plus
Si tes deux tables ont exactement la même structure :
CREATE TABLE nom_table3 (
   [completer ici la structure]
);

INSERT INTO nom_table3 
SELECT * FROM nom_table1, nom_table2;

Si tu n'as pas besoin de garder la table1, tu peux directement faire:
INSERT INTO nom_table1 SELECT * FROM nom_table2;



Si par contre tes tables n'ont pas la même structure mais ont des champs commun:
CREATE TABLE nom_table3 (
  [completer ici la structure des champs commun]
);

INSERT INTO nom_table3 (dossard, nom, prenom, date_de_naissance)
SELECT dossard, nom, prenom, date_de_naissance FROM nom_table1, nom_table2;


Si tes tables n'ont pas de champs commun :
CREATE TABLE nom_table3 (
  [completer ici la nouvelle structure]
);

INSERT INTO nom_table3 (champ1,champ2,champ3,champ4)
SELECT nom_table1.champ1, nom_table1.champ2, nom_table2.champ3, nom_table2.champ4 FROM nom_table1, nom_table2;


C'est la limite acceptable, tu ne te limitera pas à un copier coller :o
DiabloAndSab- 14 févr. 2008 à 15:47
J'ai fait ça :

INSERT INTO insc_mdc_ancien SELECT * FROM insc_mdc_connu;

et MySql me répond:

Erreur

requête SQL: Documentation

INSERT INTO insc_mdc_ancien
SELECT *
FROM insc_mdc_connu

MySQL a répondu:Documentation
#1062 - Duplicate entry '1' for key 1

Erreur

requête SQL: Documentation

SELECT *
FROM Array
WHERE CONCAT_WS( "-", ) = "1"
ORDER BY
LIMIT 0 , 100

MySQL a répondu:Documentation
#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 ') = "1" ORDER BY
LIMIT 0, 100' at line 1

je crois que c'est au niveau de l'identifiant que ça pêche.

Merci de tes réponses.
Ajouter un commentaire
Réponse
+1
moins plus
Il manque une virgule entre Nom et Prenom.
Ajouter un commentaire
Réponse
+1
moins plus
Le problème venait bien du champs 2004 apparement. Donc la solution était:

INSERT INTO insc_mdc_ancien (Course,Nom,Prenom,Adresse,CP,Ville,Pays,Sexe,Naissance,AnneeNaiss,Categorie,Club,Certificat,Obs,Licence,Pasta,PastaEnfant,
Repas,RepasEnfant,Soiree,SoireeEnfant,Tel,Mail,Modepaiement,reference,Montant,Litige,Exeption,Pack,Pasta2,
Repas2,Soiree2,Majoration,Portable,Marche)
SELECT Course,Nom,Prenom,Adresse,CP,Ville,Pays,Sexe,Naissance,AnneeNaiss,Categorie,Club,Certificat,Obs,Licence,Pasta,PastaEnfant,
Repas,RepasEnfant,Soiree,SoireeEnfant,Tel,Mail,Modepaiement,reference,Montant,Litige,Exeption,Pack,Pasta2,
Repas2,Soiree2,Majoration,Portable,Marche
FROM insc_mdc_connu

Un grand merci à vous deux Xil et Matio.
Ajouter un commentaire
Réponse
+0
moins plus
Salut,
Essaye un truc comme ça :

insert into NouvelleTable(champs1,Champs2,etc...)
select champs1,Champs2,etc...
from table1,table2
Ajouter un commentaire
Réponse
+0
moins plus
Je ne comprend pas comment tu veut récupérer les enregistrements
contenu dans cette table, mais le problème de ta solution c'est que
c'est pour un grand nombre de champs et d'enregistrement.

Merci pour ta réponse
Xil- 14 févr. 2008 à 15:06
La requête précitée insère les colonnes Champ1, Champ2, etc des tables table1 et table2 de l'intégralité des enregistrements des deux tables.
DiabloAndSab- 14 févr. 2008 à 15:36
Tu pourrais me montrer un exemple concret s'il te plaît. Moi mes premier champs c'est dossard, nom, prénom, date de naissance etc..
Merci de vos réponse aussi rapide.
Ajouter un commentaire
Réponse
+0
moins plus
Tu pourrais me montrer un exemple concret. Moi mes premier champs c'est dossard, nom, prenom, date de naissance etc..
Merci de vos réponse aussi rapide.
Ajouter un commentaire
Réponse
+0
moins plus
Oui, j'avais oublié le détail des ID communs ;)
Remplace ta requête par celle-ci :
INSERT INTO insc_mdc_ancien ([liste des colonnes séparées par virgule])
SELECT [liste des colonnes séparées par virgule]
FROM insc_mdc_connu 


Tu mets la liste de tes colonnes (dossard, nom, prenom, date_de_naissance, etc) en ne listant pas la colonne ID. Si elle est en auto_increment, ça sera correct.

Je ne sais pas d'où sort la deuxième requête par contre, mais il manque des valeurs dans le CONCAT_WS. De plus, n'importe quoi concaténé avec "-", ca ne risque pas de donner "1", donc cette requête ne renverra jamais rien.
Explications ici :
http://dev.mysql.com/doc/refman/5.0/fr/string-functions.html
Ajouter un commentaire
Réponse
+0
moins plus
C'est Dossard mon id. Donc je vais essayer nom, prenom etc...
mais ca donne ca:


Erreur

requête SQL: Documentation

INSERT INTO insc_mdc_ancien( Course, Nom Prenom, 2004, Adresse, CP, Ville, Pays, Sexe, Naissance, AnneeNaiss, Categorie, Club, Certificat, Obs, Licence, Pasta, PastaEnfant, Repas, RepasEnfant, Soiree, SoireeEnfant, Tel, Mail, Modepaiement, reference, Montant, Litige, Exeption, Pack, Pasta2, Repas2, Soiree2, Majoration, Portable, Marche )
SELECT Course, Nom Prenom, 2004, Adresse, CP, Ville, Pays, Sexe, Naissance, AnnéeNaiss, Catégorie, Club, Certificat, Obs, Licence, Pasta, PastaEnfant, Repas, RepasEnfant, Soirée, SoiréeEnfant, Tel, Mail, Modepaiement, référence, Montant, Litige, Exeption, Pack, Pasta2, Repas2, Soirée2, Majoration, Portable, Marche
FROM insc_mdc_connu

MySQL a répondu:Documentation
#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 'Prenom,2004,Adresse,CP,Ville,Pays,Sexe,Naissance,AnneeNaiss,Categorie,Club,Certi' at line 1
Ajouter un commentaire
Réponse
+0
moins plus
Apparemment y a autre chose à changer:

Car ça non plus ça ne fonctionne pas:

Erreur

requête SQL: Documentation

INSERT INTO insc_mdc_ancien( Course, Nom, Prenom, 2004, Adresse, CP, Ville, Pays, Sexe, Naissance, AnneeNaiss, Categorie, Club, Certificat, Obs, Licence, Pasta, PastaEnfant, Repas, RepasEnfant, Soiree, SoireeEnfant, Tel, Mail, Modepaiement, reference, Montant, Litige, Exeption, Pack, Pasta2, Repas2, Soiree2, Majoration, Portable, Marche )
SELECT Course, Nom Prenom, 2004, Adresse, CP, Ville, Pays, Sexe, Naissance, AnnéeNaiss, Catégorie, Club, Certificat, Obs, Licence, Pasta, PastaEnfant, Repas, RepasEnfant, Soirée, SoiréeEnfant, Tel, Mail, Modepaiement, référence, Montant, Litige, Exeption, Pack, Pasta2, Repas2, Soirée2, Majoration, Portable, Marche
FROM insc_mdc_connu

MySQL a répondu:Documentation
#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 '2004, Adresse, CP, Ville, Pays, Sexe, Naissance, AnneeNaiss, Categorie, Club, Ce' at line 1



Merci
Ajouter un commentaire
Réponse
+0
moins plus
Tu es sur que tu as une colonne nommée '2004' ? D'après la documentation de MySQL, les noms de colonnes peuvent commencer par des chiffres, mais ne peuvent pas être constitués uniquement de chiffres.
Ajouter un commentaire
Réponse
+0
moins plus
Re,
D'accord avec Xil
Ajouter un commentaire
Réponse
+0
moins plus
J'ai le même prb !!!
Ajouter un commentaire
Ce document intitulé « Faire Fusionner 2 tables pour récupérer... » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?