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

Signaler
Messages postés
80
Date d'inscription
mardi 9 octobre 2007
Statut
Membre
Dernière intervention
19 février 2009
-
 Pascalou -
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...

12 réponses

Messages postés
356
Date d'inscription
vendredi 18 janvier 2008
Statut
Membre
Dernière intervention
11 juin 2009
250
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
9
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 60769 internautes nous ont dit merci ce mois-ci

Messages postés
80
Date d'inscription
mardi 9 octobre 2007
Statut
Membre
Dernière intervention
19 février 2009
2
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.
Messages postés
356
Date d'inscription
vendredi 18 janvier 2008
Statut
Membre
Dernière intervention
11 juin 2009
250
Il manque une virgule entre Nom et Prenom.
Messages postés
80
Date d'inscription
mardi 9 octobre 2007
Statut
Membre
Dernière intervention
19 février 2009
2
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.
Messages postés
671
Date d'inscription
mardi 6 mars 2007
Statut
Membre
Dernière intervention
25 janvier 2011
281
Salut,
Essaye un truc comme ça :

insert into NouvelleTable(champs1,Champs2,etc...)
select champs1,Champs2,etc...
from table1,table2
Messages postés
80
Date d'inscription
mardi 9 octobre 2007
Statut
Membre
Dernière intervention
19 février 2009
2
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
Messages postés
356
Date d'inscription
vendredi 18 janvier 2008
Statut
Membre
Dernière intervention
11 juin 2009
250
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.
Messages postés
80
Date d'inscription
mardi 9 octobre 2007
Statut
Membre
Dernière intervention
19 février 2009
2 >
Messages postés
356
Date d'inscription
vendredi 18 janvier 2008
Statut
Membre
Dernière intervention
11 juin 2009

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.
Messages postés
80
Date d'inscription
mardi 9 octobre 2007
Statut
Membre
Dernière intervention
19 février 2009
2
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.
Messages postés
356
Date d'inscription
vendredi 18 janvier 2008
Statut
Membre
Dernière intervention
11 juin 2009
250
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
Messages postés
80
Date d'inscription
mardi 9 octobre 2007
Statut
Membre
Dernière intervention
19 février 2009
2
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
Messages postés
80
Date d'inscription
mardi 9 octobre 2007
Statut
Membre
Dernière intervention
19 février 2009
2
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
Messages postés
356
Date d'inscription
vendredi 18 janvier 2008
Statut
Membre
Dernière intervention
11 juin 2009
250
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.
Messages postés
671
Date d'inscription
mardi 6 mars 2007
Statut
Membre
Dernière intervention
25 janvier 2011
281
Re,
D'accord avec Xil
J'ai le même prb !!!