Problème clés étrangères MySQL

Fermé
Paulo - Modifié le 9 avril 2018 à 16:02
 Paulo - 10 avril 2018 à 10:39
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 jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
Modifié le 9 avril 2018 à 16:06
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
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 40357 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 23 octobre 2024 9 389 > Paulo
9 avril 2018 à 16:14
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 jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
9 avril 2018 à 16:16
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
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 40357 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 23 octobre 2024 9 389 > Paulo
9 avril 2018 à 16:20
Tu rends le champ non obligatoire
0
jee pee Messages postés 40357 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 23 octobre 2024 9 389
9 avril 2018 à 16:06
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
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