Précédent   Forum des professionnels en informatique > Bases de données > MySQL > Requêtes
Requêtes Forum d'entraide sur les requêtes MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 04/08/2008, 15h27   #1
Membre confirmé
 
Avatar de cyreel
 
Jacques KONAN
Développeur Web
Inscription : juin 2004
Messages : 342
Détails du profil
Informations personnelles :
Nom : Jacques KONAN

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : juin 2004
Messages : 342
Points : 216
Points : 216
Envoyer un message via MSN à cyreel Envoyer un message via Yahoo à cyreel
Par défaut clé etangère sur une meme table

Bonjour à tous!
j'ai du mal a ajouter un element dans ma table avec une clé etrangère. voici la requete de création de la table:
Citation:
CREATE TABLE `element` (
`id` INTEGER NOT NULL AUTO_INCREMENT ,
`libele` VARCHAR(200) ,
`id_element` INTEGER NOT NULL ,
PRIMARY KEY (`id`)
);

ALTER TABLE `element` ADD FOREIGN KEY (id_element) REFERENCES `element` (`id`);
merci de m'indiquer comme faire pour ecrire une reque insert ds cette table.
merci de me comprendre car c'est la premiere fois que j'utilise les clé etrangères.
cyreel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/08/2008, 16h33   #2
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 11 034
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur d'études en informatique
Secteur : Enseignement

Informations forums :
Inscription : août 2006
Messages : 11 034
Points : 18 324
Points : 18 324
Envoyer un message via MSN à CinePhil
Tout simplement :
Code :
1
2
INSERT INTO element(libele, id_element)
VALUES('tonlibellé', idDuPère)
Il faut bien sûr que l'élément père de la ligne que tu vas ajouter existe déjà dans la table, ce qui peut poser problème lors de l'insertion de la première ligne !

Ce qu'il faut donc faire pour éviter ce désagrément :
1) Créer la table
2) Insérer le premier enregistrement qui doit donc être le plus haut dans la hiérarchie (le père de famille en quelque sorte). La contrainte de clé étrangère n'existant pas encore, on peut donner à id_element la valeur que prendra id (en principe 1).
3) Vérifier que l'id_element a bien la même valeur que l'id de ce premier enregistrement.
4) Ajouter la contrainte de clé étrangère
5) Insérer les enregistrements suivants. Le n° 2 aura forcément le 1 en valeur d'id_element, le n° 3 pourra avoir le 1, ou le 2 et ainsi de suite.

Si tu veux autoriser qu'il y ait plusieurs pères, il faut enlever le NOT NULL de la colonne id-element et de préférence mettre une valeur par défaut (généralement DEFAULT 0) lors de la création de la table.
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/08/2008, 16h33   #3
Expert Confirmé Sénior
 
Avatar de qi130
 
Homme Pierre
Ingénieur qualité méthodes
Inscription : mars 2003
Messages : 3 726
Détails du profil
Informations personnelles :
Nom : Homme Pierre
Âge : 51
Localisation : France

Informations professionnelles :
Activité : Ingénieur qualité méthodes
Secteur : Finance

Informations forums :
Inscription : mars 2003
Messages : 3 726
Points : 4 739
Points : 4 739
La valeur de id_element doit exister dans la table quand tu fais l'insertion.
__________________
"Il n'y a pas de bonnes réponses à une mauvaise question." (M. Godet)
-----------------------
Pensez à cloturer votre sujet - Aucune réponse aux sollicitations techniques par MP
Usus magister est optimus
qi130 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/08/2008, 19h17   #4
Membre confirmé
 
Avatar de cyreel
 
Jacques KONAN
Développeur Web
Inscription : juin 2004
Messages : 342
Détails du profil
Informations personnelles :
Nom : Jacques KONAN

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : juin 2004
Messages : 342
Points : 216
Points : 216
Envoyer un message via MSN à cyreel Envoyer un message via Yahoo à cyreel
Merci pour toutes les reponses!
Mais j'ai du mal a tout comprendre! S'i j'ajoute le premier élément comme ceci:
Citation:
INSERT INTO element(libele, id_element) VALUES('travail', 1);
par la suite quelle valeur dois-je donner a id_element puisque cela doit se faire me manière automatique?
cyreel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/08/2008, 20h49   #5
Expert Confirmé Sénior
 
Avatar de qi130
 
Homme Pierre
Ingénieur qualité méthodes
Inscription : mars 2003
Messages : 3 726
Détails du profil
Informations personnelles :
Nom : Homme Pierre
Âge : 51
Localisation : France

Informations professionnelles :
Activité : Ingénieur qualité méthodes
Secteur : Finance

Informations forums :
Inscription : mars 2003
Messages : 3 726
Points : 4 739
Points : 4 739
Citation:
Envoyé par cyreel Voir le message
cela doit se faire me manière automatique?
ce qui est automatique, c'est la numérotation de id, pas celle de id_element...
__________________
"Il n'y a pas de bonnes réponses à une mauvaise question." (M. Godet)
-----------------------
Pensez à cloturer votre sujet - Aucune réponse aux sollicitations techniques par MP
Usus magister est optimus
qi130 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 05/08/2008, 12h35   #6
Membre confirmé
 
Avatar de cyreel
 
Jacques KONAN
Développeur Web
Inscription : juin 2004
Messages : 342
Détails du profil
Informations personnelles :
Nom : Jacques KONAN

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : juin 2004
Messages : 342
Points : 216
Points : 216
Envoyer un message via MSN à cyreel Envoyer un message via Yahoo à cyreel
Merci a tous pour vos reposnes.
maisntenant je crois que je sais comment je dois m'y prendre!
cyreel est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 04h56.


 
 
 
 
Partenaires

Hébergement Web