0 ligne insérée

Résolu/Fermé
geekat Messages postés 228 Date d'inscription vendredi 31 juillet 2015 Statut Membre Dernière intervention 24 février 2017 - Modifié par geekat le 20/08/2015 à 14:33
geekat Messages postés 228 Date d'inscription vendredi 31 juillet 2015 Statut Membre Dernière intervention 24 février 2017 - 21 août 2015 à 15:01
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 ?

4 réponses

jordane45 Messages postés 38346 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 décembre 2024 4 717
21 août 2015 à 01:26
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 vendredi 31 juillet 2015 Statut Membre Dernière intervention 24 février 2017
21 août 2015 à 09:03
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 38346 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 décembre 2024 4 717
21 août 2015 à 10:05
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 vendredi 31 juillet 2015 Statut Membre Dernière intervention 24 février 2017
21 août 2015 à 10:13
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 vendredi 31 juillet 2015 Statut Membre Dernière intervention 24 février 2017
21 août 2015 à 10:21
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 vendredi 31 juillet 2015 Statut Membre Dernière intervention 24 février 2017
21 août 2015 à 11:06
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 vendredi 31 juillet 2015 Statut Membre Dernière intervention 24 février 2017
21 août 2015 à 15:01
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