Problème clés étrangères MySQL

Paulo -  
 Paulo -
Bonjour,

Actuellement entrain de "créer" une BDD sur phpmyadmin je rencontre un problème avec les clés étrangères, en fait plusieurs de mes tables sont liés entre elles par une clé étrangère mais celle-ci ne s'incrit pas, alors que dans la table où c'est une clé primaire elle existe.
Et étant donné que je ne peux pas importer de données dans une table où toutes les colonnes ne se complète pas, je suis complètement bloqués.

J'ai essayé de les faire venir "à la main" en utilisant ces lignes :
UPDATE villes 
SET ID_province = ( 
       SELECT ID_province 
       FROM provinces 
)


Mais elles ne retournent rien..

Si quelqu'un a une réponse ça m'aiderai beaucoup.

Merci d'avance

A voir également:

2 réponses

Reivax962 Messages postés 3672 Date d'inscription   Statut Membre Dernière intervention   1 011
 
Bonjour,

Dans la requête que tu donnes, comment MySQL peut-il savoir quelle province correspond à quelle ville ?
Il faut être plus précis, du genre
UPDATE villes SET ID_province = 3 WHERE ID_ville IN (1, 2, 4);

Tu as beaucoup de données à mettre à jour ?

Xavier
0
Paulo
 
En fait, je veux juste pouvoir prendre l'ID_province qui se situe dans une autre table pour pouvoir importer toutes les données de villes.
Je n'ai aucunes donnée pour villes pour l'instant en fait.
Et j'ai 22 valeurs à faire coïncider avec les données ville que je rentrerai.
0
jee pee Messages postés 41519 Date d'inscription   Statut Modérateur Dernière intervention   9 720 > Paulo
 
La machine ne va pas deviner que telle ville est dans telle province, il faut soit un critère, soit mettre la valeur province dans le fichier que tu importes.
0
Reivax962 Messages postés 3672 Date d'inscription   Statut Membre Dernière intervention   1 011
 
Et bien il faudra alors faire quelque chose comme ça :
- Si tu connais le code de la province (dans l’exemple, 8) :
INSERT INTO Villes (Nom, ID_Province)
VALUES ('Une Ville', 8)


- Si tu ne connais que son nom :
INSERT INTO Villes (Nom, ID_Province)
SELECT 'Une Ville', ID FROM Provinces WHERE Nom = 'Nom Province'


Xavier
0
Paulo
 
Je vois donc je n'ai plus qu'à les rentrer à la main..
Malheureusement ce sont des données de "masse" (1.5 millions à traiter et organiser)
Merci à toi
0
jee pee Messages postés 41519 Date d'inscription   Statut Modérateur Dernière intervention   9 720 > Paulo
 
Tu rends le champ non obligatoire
0
jee pee Messages postés 41519 Date d'inscription   Statut Modérateur Dernière intervention   9 720
 
Bonjour,

Ta requête est incomplète, puisque si la table provinces contient 20 lignes tu essaies de mettre à jour le champ avec 20 valeurs.

D'ailleurs tu devrais avoir une erreur du type "la sous-requete ramène plus d'une ligne". Dans ta sous requête il faut un critère pour ramener la province qui correspond à la ville.

Cdlt
0
Paulo
 
Je suis désolé mais ça ne me ramène pas cette erreur la, ça ne me ramène même aucunes erreur, il traite juste aucunes ligne.
0