Rechercher : dans
Par :

Faire Fusionner 2 tables pour récupérer...

Dernière réponse le 15 fév 2008 à 09:23:50 DiabloAndSab, le 14 fév 2008 à 14:32:59 
 Signaler ce message aux modérateurs

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...

Configuration: Windows XP
Firefox 2.0.0.12

Meilleures réponses pour « Faire Fusionner 2 tables pour récupérer... » dans :
Fusionner deux partitions VoirFusionner deux partitions (en anglais partition merge) n'est possible que si l'une d'entre-elle est vide, car il peut exister deux fichiers différents portant le même nom et le même chemin sur deux différentes partitions. Ainsi, pour y arriver, il...

1

Matio, le 14 fév 2008 à 14:54:56

Salut,
Essaye un truc comme ça :

insert into NouvelleTable(champs1,Champs2,etc...)
select champs1,Champs2,etc...
from table1,table2

Répondre à Matio

2

DiabloAndSab, le 14 fév 2008 à 14:59:28

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

Répondre à DiabloAndSab

3

Xil, le 14 fév 2008 à 15:06:43

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.

Répondre à Xil

5

DiabloAndSab, le 14 fév 2008 à 15:36:37

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.

Répondre à DiabloAndSab

4

DiabloAndSab, le 14 fév 2008 à 15:12:50

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.

Répondre à DiabloAndSab

6

Xil, le 14 fév 2008 à 15:39:24

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

Répondre à Xil

7

DiabloAndSab, le 14 fév 2008 à 15:47:41

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.

Répondre à DiabloAndSab

8

Xil, le 14 fév 2008 à 16:02:40

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

Répondre à Xil

9

DiabloAndSab, le 14 fév 2008 à 16:22:03

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

Répondre à DiabloAndSab

10

Xil, le 14 fév 2008 à 16:34:41

Il manque une virgule entre Nom et Prenom.

Répondre à Xil

11

DiabloAndSab, le 14 fév 2008 à 16:49:45

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

Répondre à DiabloAndSab

12

Xil, le 14 fév 2008 à 16:58:36

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.

Répondre à Xil

13

Matio, le 14 fév 2008 à 17:21:02

Re,
D'accord avec Xil

Répondre à Matio

14

 DiabloAndSab, le 15 fév 2008 à 09:23:50

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,Anne­eNaiss,Categorie,Club,Certificat,Obs,Licence,Pasta,PastaEnfa­nt,
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,Annee­Naiss,Categorie,Club,Certificat,Obs,Licence,Pasta,PastaEnfan­t,
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.

Répondre à DiabloAndSab