Requete sql INSERT INTO + SELECT (php)

Nouveau WRInaute
Bonjour,
Je vous écris car j'ai grandement besoin de votre aide.
J'ai 5 tables sur MySQL et je voudrais insérer certains champs dans ces 5 tables dans une seule.
Voici la requête que j'ai fais dans un fichier *.php, cependant elle ne fonctionne pas mais ne me revois aucune erreur.

Code:
$sql="INSERT INTO relait_mip.gg_eleves  
SELECT gg_resp1.UAJ, gg_resp1.ANNEE_SCOLAIRE, gg_el1.ELEVE_ID, gg_el1.ELENOET, gg_el1.NOM, gg_el1.PRENOM, gg_structure.CODE_STRUCTURE, gg_structure.LIBELLE_LONG, gg_structure.CODE_MEF, mip_diplomes.type_dip, mip_diplomes.libelle, gg_el1.DATE_NAISS, gg_resp3.LIGNE1_ADRESSE, gg_resp3.LIGNE2_ADRESSE, gg_resp3.LIGNE3_ADRESSE, gg_resp3.CODE_POSTAL, gg_resp3.LL_PAYS, gg_resp3.LIBELLE_POSTAL, gg_resp3.COMMUNE_ETRANGERE 
FROM relait_mip.gg_el1, relait_mip.gg_el2, relait_mip.gg_resp1, relait_mip.gg_resp2, relait_mip.gg_resp3, relait_mip.gg_structure, relait_mip.gg_mef_dip, relait_mip.mip_diplomes 
WHERE gg_el1.ELEVE_ID = gg_resp2.ELEVE_ID2 
AND gg_resp1.PERSONNE_ID = gg_resp2.PERSONNE_ID2 
AND gg_resp1.ADRESSE_ID = gg_resp3.ADRESSE_ID3 
AND gg_el2.CODE_STRUCTURE9 = gg_structure.CODE_STRUCTURE 
AND gg_structure.CODE_MEF = gg_mef_dip.CODE_MEF 
AND gg_mef_dip.code_diplome = mip_diplomes.c_diplome"; 


$req=mysql_query($sql)or die (mysql_error());

Je n'arrive pas a comprendre ce qui cloche.
J'aimerais beaucoup avoir votre aide.
Merci à tous !
Mélanie
 
WRInaute accro
Tu nous facilites pas vraiment la tâche pour t'aider la.

Si on pouvait avoir :
- un descriptif de chaque table
- t'es sur que ta requete select est bonne ?
 
WRInaute impliqué
Il faut spécifier les colonnes :
Code:
INSERT INTO relait_mip.gg_eleves (column1, column2, columnX) SELECT …

De plus, utilise plutôt les jointures avec « JOIN ».
Tu peux aussi nous donner l'erreur générée (mysql_error).
 
WRInaute accro
Le seul cas ou il n'est pas utile de spécifier le nom des colonnes, c'est dans le cas ou la structure de la table d'arrivée et la même que le résultat de ta requête select.

Il doit donc y avoir un souci dans ta requête de sélection. Ou bien oui spécifie les colonnes manuellement.
 
Nouveau WRInaute
J'ai spécifiée les noms des colonnes mais ça ne marche toujours pas.
De plus mysql_error() ne me renvois aucune erreur.
En fait, c'est comme si la requête s’exécutait parfaitement sauf que les données ne sont pas enregistrées dans la table.

Pour le SELECT j'ai l'impression qu'elle est bonne oui.

Code:
$sql="INSERT INTO relait_mip.gg_eleves (UAJ, ANNEE_SCOLAIRE, ELEVE_ID, ELENOET, NOM, PRENOM, CODE_STRUCTURE, LIBELLE_LONG, CODE_MEF, TYPE_DIP, LIBELLE_DIP, DATE_NAISS, ADRESSE1, ADRESSE2, ADRESSE3, CODE_POSTAL, LL_PAYS, LIBELLE_POSTAL, COMMUNE_ETRANGERE) 
SELECT gg_resp1.UAJ, gg_resp1.ANNEE_SCOLAIRE, gg_el1.ELEVE_ID, gg_el1.ELENOET, gg_el1.NOM, gg_el1.PRENOM, gg_structure.CODE_STRUCTURE, gg_structure.LIBELLE_LONG, gg_structure.CODE_MEF, mip_diplomes.type_dip, mip_diplomes.libelle, gg_el1.DATE_NAISS, gg_resp3.LIGNE1_ADRESSE, gg_resp3.LIGNE2_ADRESSE, gg_resp3.LIGNE3_ADRESSE, gg_resp3.CODE_POSTAL, gg_resp3.LL_PAYS, gg_resp3.LIBELLE_POSTAL, gg_resp3.COMMUNE_ETRANGERE
FROM relait_mip.gg_el1, relait_mip.gg_el2, relait_mip.gg_resp1, relait_mip.gg_resp2, relait_mip.gg_resp3, relait_mip.gg_structure, relait_mip.gg_mef_dip, relait_mip.mip_diplomes
WHERE gg_el1.ELEVE_ID = gg_resp2.ELEVE_ID
AND gg_resp1.PERSONNE_ID = gg_resp2.PERSONNE_ID2
AND gg_resp1.ADRESSE_ID = gg_resp3.ADRESSE_ID3
AND gg_el2.CODE_STRUCTURE9 = gg_structure.CODE_STRUCTURE
AND gg_structure.CODE_MEF = gg_mef_dip.CODE_MEF
AND gg_mef_dip.code_diplome = mip_diplomes.c_diplome";

$req=mysql_query($sql)or die (mysql_error());


Pour les jointures avec JOIN je n'en ai jamais fait, j'ai toujours fait comme ça du coup je ne sais pas trop comment il faut faire (LEFT JOIN, RIGHT JOIN, JOIn etc. )
 
Nouveau WRInaute
Voici un descriptif de chaque tables que j'utilise:


Code:
# --------------------------------------------------------

#
# Structure de la table `gg_el1`
#

CREATE TABLE `gg_el1` (
  `UAJ` varchar(110) NOT NULL default '',
  `ANNEE_SCOLAIRE` varchar(110) NOT NULL default '',
  `ELEVE_ID` varchar(110) NOT NULL default '',
  `ELENOET` varchar(110) NOT NULL default '',
  `NOM` varchar(110) NOT NULL default '',
  `PRENOM` varchar(110) NOT NULL default '',
  `DATE_NAISS` varchar(110) NOT NULL default '',
  `CODE_MOTIF_SORTIE` varchar(110) NOT NULL default ''
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

# --------------------------------------------------------

#
# Structure de la table `gg_el2`
#

CREATE TABLE `gg_el2` (
  `ELEVE_ID7` varchar(110) NOT NULL default '',
  `CODE_STRUCTURE9` varchar(110) NOT NULL default '',
  `TYPE_STRUCTURE` varchar(110) NOT NULL default ''
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

# --------------------------------------------------------

#
# Structure de la table `gg_eleves`
#

CREATE TABLE `gg_eleves` (
  `UAJ` varchar(20) NOT NULL default '',
  `ANNEE_SCOLAIRE` varchar(4) NOT NULL default '',
  `ELEVE_ID` varchar(20) NOT NULL default '',
  `ELENOET` varchar(20) NOT NULL default '',
  `NOM` varchar(30) NOT NULL default '',
  `PRENOM` varchar(30) NOT NULL default '',
  `CODE_STRUCTURE` varchar(30) NOT NULL default '',
  `LIBELLE_LONG` varchar(90) NOT NULL default '',
  `CODE_MEF` varchar(15) NOT NULL default '',
  `TYPE_DIP` varchar(60) NOT NULL default '',
  `LIBELLE_DIP` varchar(120) NOT NULL default '',
  `DATE_NAISS` varchar(30) NOT NULL default '',
  `ADRESSE1` varchar(90) NOT NULL default '',
  `ADRESSE2` varchar(90) NOT NULL default '',
  `ADRESSE3` varchar(90) NOT NULL default '',
  `CODE_POSTAL` varchar(6) NOT NULL default '',
  `LL_PAYS` varchar(90) NOT NULL default '',
  `LIBELLE_POSTAL` varchar(90) NOT NULL default '',
  `COMMUNE_ETRANGERE` varchar(90) NOT NULL default ''
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

# --------------------------------------------------------

#
# Structure de la table `gg_mef_dip`
#

CREATE TABLE `gg_mef_dip` (
  `CODE_MEF` varchar(11) NOT NULL default '',
  `CODE_DIPLOME` int(8) NOT NULL default '0'
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

# --------------------------------------------------------

#
# Structure de la table `gg_resp1`
#

CREATE TABLE `gg_resp1` (
  `VERSION` varchar(110) NOT NULL default '',
  `UAJ` varchar(110) NOT NULL default '',
  `ANNEE_SCOLAIRE` varchar(110) NOT NULL default '',
  `DATE_EXPORT` varchar(110) NOT NULL default '',
  `HORODATAGE` varchar(110) NOT NULL default '',
  `PERSONNE_ID` varchar(110) NOT NULL default '',
  `LC_CIVILITE` varchar(110) NOT NULL default '',
  `LL_CIVILITE` varchar(110) NOT NULL default '',
  `NOM` varchar(110) NOT NULL default '',
  `PRENOM` varchar(110) NOT NULL default '',
  `TEL_PERSONNEL` varchar(110) NOT NULL default '',
  `TEL_PORTABLE` varchar(110) NOT NULL default '',
  `ACCEPTE_SMS` varchar(110) NOT NULL default '',
  `TEL_PROFESSIONNEL` varchar(110) NOT NULL default '',
  `MEL` varchar(110) NOT NULL default '',
  `COMMUNICATION_ADRESSE` varchar(110) NOT NULL default '',
  `ADRESSE_ID` varchar(110) NOT NULL default '',
  `CODE_PROFESSION` varchar(110) NOT NULL default ''
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

# --------------------------------------------------------

#
# Structure de la table `gg_resp2`
#

CREATE TABLE `gg_resp2` (
  `ELEVE_ID` varchar(110) NOT NULL default '',
  `PERSONNE_ID2` varchar(110) NOT NULL default '',
  `RESP_LEGAL` varchar(110) NOT NULL default '',
  `CODE_PARENTE` varchar(110) NOT NULL default '',
  `RESP_FINANCIER` varchar(110) NOT NULL default '',
  `PERS_PAIEMENT` varchar(110) NOT NULL default '',
  `PERS_CONTACT` varchar(110) NOT NULL default ''
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

# --------------------------------------------------------

#
# Structure de la table `gg_resp3`
#

CREATE TABLE `gg_resp3` (
  `ADRESSE_ID3` varchar(110) NOT NULL default '',
  `LIGNE1_ADRESSE` varchar(110) NOT NULL default '',
  `LIGNE2_ADRESSE` varchar(110) NOT NULL default '',
  `LIGNE3_ADRESSE` varchar(110) NOT NULL default '',
  `LIGNE4_ADRESSE` varchar(110) NOT NULL default '',
  `CODE_POSTAL` varchar(110) NOT NULL default '',
  `CODE_PAYS` varchar(110) NOT NULL default '',
  `CODE_COMMUNE_INSEE` varchar(110) NOT NULL default '',
  `LL_PAYS` varchar(110) NOT NULL default '',
  `CODE_DEPARTEMENT` varchar(110) NOT NULL default '',
  `LIBELLE_POSTAL` varchar(110) NOT NULL default '',
  `COMMUNE_ETRANGERE` varchar(110) NOT NULL default ''
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

# --------------------------------------------------------

#
# Structure de la table `gg_structure`
#

CREATE TABLE `gg_structure` (
  `VERSION` varchar(200) NOT NULL default '',
  `UAJ` varchar(200) NOT NULL default '',
  `ANNEE_SCOLAIRE` text NOT NULL,
  `DATE_EXPORT` text NOT NULL,
  `HORODATAGE` text NOT NULL,
  `CODE_STRUCTURE` text NOT NULL,
  `LIBELLE_LONG` varchar(200) NOT NULL default '',
  `CODE_RNE` varchar(200) NOT NULL default '',
  `CODE_MEF` varchar(11) NOT NULL default '',
  `CODE_STRUCTURE2` varchar(200) NOT NULL default '',
  `LIBELLE_LONG3` text NOT NULL,
  `CODE_RNE4` varchar(200) NOT NULL default '',
  `CODE_MEF5` varchar(200) NOT NULL default '',
  `CODE_STRUCTURE6` varchar(200) NOT NULL default '',
  KEY `CODE_MEF` (`CODE_MEF`),
  KEY `UAJ` (`UAJ`,`CODE_MEF`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

# --------------------------------------------------------

#
# Structure de la table `mip_diplomes`
#

CREATE TABLE `mip_diplomes` (
  `id` int(10) unsigned NOT NULL auto_increment,
  `c_diplome` varchar(255) default NULL,
  `type_dip` varchar(255) default NULL,
  `spe` varchar(255) default NULL,
  `libelle` varchar(255) default NULL,
  `date_creation` datetime default NULL,
  `abrogation` datetime default NULL,
  PRIMARY KEY  (`id`),
  UNIQUE KEY `c_diplome` (`c_diplome`),
  KEY `type_dip` (`type_dip`),
  KEY `spe` (`spe`),
  KEY `date_creation` (`date_creation`)
) ENGINE=MyISAM AUTO_INCREMENT=3766 DEFAULT CHARSET=latin1 AUTO_INCREMENT=3766 ;
 
WRInaute accro
Non je ne crois pas, par contre tu dois vérifier les types des champs que tu essaies d'insérer dans la table de destination, ils doivent être les mêmes et de même longueur.
 
Nouveau WRInaute
J'ai mis tous les champs du même type et de même longueur que les champs des tables que j'importe mais toujours pareil ..
Rien ne se produit :(
 
WRInaute occasionnel
Je pense qu'il manque simplement VALUES dans ta requete.

Celle ci doit ressembler à quelquechose comme ça : INSERT INTO matable (champ1, champ2) VALUES (SELECT champ1, champ2 FROM matable2)

ps: fais bien attention au format des champs que tu récupères ils doivent être du même type que ceux dans lesquels tu essaies de les ajouter.
 
Discussions similaires
Haut