0 ligne insérée

Résolu
geekat Messages postés 228 Date d'inscription   Statut Membre Dernière intervention   -  
geekat Messages postés 228 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
Je tente d'insérer des données avec des jointures, la syntaxe semble correcte mais rien n'est inséré dans ma table!
Y-a-t-il un problème avec ma version de phpmyadmin 4.3.12 ?

A voir également:

4 réponses

jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
Bonjour,

Déjà... il est préférable de nous coller le code que tu utilises.... plutôt que de nous en mettre une capture écran

Ensuite.... as tu testé la partie "select" de ta requête directement dans ta BDD pour voir si elle retournait quelque chose ?

0
geekat Messages postés 228 Date d'inscription   Statut Membre Dernière intervention  
 
Merci pour ta réponse.
Le code que j'utilise est la requête affichée sur l'image :
INSERT INTO structure (id_struct, famille_contact, id_typologie, nom_contact, desc_contact, nom_struct, nom_service, adres_struct, code_postal, ville, id_pays, tel_struct, fax_struct, mail_struct, page_web ) 
SELECT x.`id_struct`, x.`famille_contact`, y.`id_typologie`, x.`nom_contact`,x.`desc_contact`,x.`nom_struct`,x.`nom_service`,x.`adres_struct`,x.`code_postal`,x.`ville`, z.id,  x.`tel_struct`,x.`fax_struct`, x.`mail_struct` ,x.`page_web`
FROM brut as x, typologie as y, pays as z 
WHERE x.typologie = y.typologie AND x.pays = z.pays;


En essayant juste le SELECT, ça me retourne le message suivant :
La sélection courante ne contient pas de colonne unique. Les grilles d'édition, les cases à cocher ainsi que les liens Edition, Copie et Supprimer ne sont pas disponibles.
0
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 
Je n'ai jamais eu ce type d'erreur...

Peux tu faire un SELECT * sur chacune de tes tables pouvoir voir si déjà là.. ça passe :

SELECT * FROM brut;

SELECT * FROM typologie;

SELECT * FROM pays;

0
geekat Messages postés 228 Date d'inscription   Statut Membre Dernière intervention  
 
Cela m'affiche bien les lignes de mes tables pour chacune d'elles.

Affichage des lignes 0 - 17 (total de 18, Traitement en 0.0000 secondes.)
Affichage des lignes 0 - 5 (total de 6, Traitement en 0.0010 secondes.)
Affichage des lignes 0 - 24 (total de 222, Traitement en 0.0000 secondes.)
0
geekat Messages postés 228 Date d'inscription   Statut Membre Dernière intervention  
 
Sur un serveur disant, j'ai obtenu un autre résultat : seule une ligne a été insérée (ligne 5).
J'ai recopié le même code SQL en local, et j'ai eu ce résultat. La ligne 5 a été insérée correctement avec les clés étrangères.
0
geekat Messages postés 228 Date d'inscription   Statut Membre Dernière intervention  
 
J'ai trouvé pourquoi, c'est à cause de l'orthographe des valeurs qui ne correspondent pas dans le WHERE :P
Tout ça à cause d'un "s" .
Merci pour ton aide!
J'ai maintenant 15 lignes insérées au lieu de 18, et je sais pourquoi mais pas comment résoudre ça. En fait, il y a des valeurs qui sont vides pour pays, donc le WHERE ne se fait pas. Comment faire dans ce cas-là ?
0
geekat Messages postés 228 Date d'inscription   Statut Membre Dernière intervention  
 
Tout est résolu.
Il fallait utiliser le LEFT JOIN au lieu du WHERE.

INSERT INTO structure (id_struct, famille_contact, id_typologie, nom_contact, desc_contact, nom_struct, nom_service, adres_struct, code_postal, ville, id_pays, tel_struct, fax_struct, mail_struct, page_web ) 
select x.`id_struct`, x.`famille_contact`, y.`id_typologie`, x.`nom_contact`,x.`desc_contact`,x.`nom_struct`,x.`nom_service`,x.`adres_struct`,x.`code_postal`,x.`ville`, z.id,  x.`tel_struct`,x.`fax_struct`, x.`mail_struct` ,x.`page_web`
from brut as x
LEFT JOIN typologie as y
ON x.typologie = y.typologie
LEFT JOIN pays as z 
ON x.pays = z.pays


Merci :-)
0