IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage SQL Discussion :

INSERT et SELECT avec clé étrangère


Sujet :

Langage SQL

  1. #1
    Membre éprouvé Avatar de anisj1m
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2006
    Messages
    1 067
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 067
    Points : 955
    Points
    955
    Par défaut INSERT et SELECT avec clé étrangère
    Bonjour,

    J'ai deux tables société et employer, la table employer a une foreign key sur la table societe.

    Pour la gestion des requêtes je veux savoir qu'elle est l'apport de la déclaration de la contrainte foreign key.

    POUR INSERT : si je dois insérer une société, est ce que je dois insérer séparément ces employer dans des inserts sur la table employer aussi ?

    Pour SELECT : est-ce que je dois faire une requête sur la table société et faire une autre requête sur la table employer pour avoir les employer ayant l'id de la société?

    Si cela est vrai, alors où est l'apport de déclarer une contrainte foreign key?
    Ce qu'on appelons le hasard n'est que notre incapacité à comprendre un degré d'ordre supérieur.

  2. #2
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    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 : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Citation Envoyé par anisj1m Voir le message
    j'ai deux tables société et employer,
    En français, on écrit "employé" pour parler de quelqu'un qui est salarié d'une société, "employer" est un verbe !

    la table employer a une foreign key sur la table societe.

    POUR INSERT : si je dois insérer une société, est ce que je dois insérer séparément ces employer des des inserts sur la table employer aussi ?
    Pour que la clé étrangère de la table "employe" référençant la clé primaire de la table "societe" puisse être alimentée lors de l'insertion d'un employé, il faut que la société pré-existe dans la table "societe". Donc on insère d'abord la société puis ses employés.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    -- Insertion de la société
    INSERT INTO societe (ste_nom)
    VALUES ('Developpez.com');
     
    -- Insertion d'un employé
    INSERT INTO employe (emp_id_societe, emp_nom, emp_prenom)
    VALUES (
      (SELECT ste_id
       FROM societe
       WHERE ste_nom = 'Developpez.com'
      ),
      'Dupont',
      'Jean'
    )
    Pour SELECT : est ce que je dois faire une requête sur la table société et faire une autre requête sur la table employer pour avoir les employer ayant l'id du société?
    Non puisque l'identifiant de la société est la clé étrangère dans la table "employe".
    Si tu n'as que le nom de la société et pas son identifiant, tu fais une jointure :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT e.emp_nom, e.emp_prenom
    FROM employe e
    INNER JOIN societe s ON s.ste_id = e.emp_id_societe
    WHERE s.ste_nom = 'Developpez.com'
    si cela est vrai, alors ou est l'apport de déclaré une constraint foreign key?
    Les clés étrangères garantissent la cohérence des données.
    Impossible d'insérer l'identifiant de société 12 dans la table des employés si cet identifiant n'existe pas dans la table "societe", c'est à dire si la société n'existe pas.

    Et pour l'interrogation des données, c'est sur les clés primaires et clés étrangères que se font les jointures.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « 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 la suite Linux Mageïa !

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2014
    Messages : 5
    Points : 5
    Points
    5
    Par défaut Une si belle réponse sans un merci ?
    Merci, je voulais te remercier pour ton exemple simple et très instructif
    J'ai créé un compte juste pour dire ça

  4. #4
    Nouveau Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2016
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Qui plus est 21minutes après la question !
    Merci pour cette réponse instructive et concise

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. MySQL : insertion dans table avec clés étrangères
    Par chatmi dans le forum Requêtes
    Réponses: 7
    Dernier message: 22/06/2012, 15h36
  2. Oracle 8 : INSERT SELECT avec NOT IN trop long
    Par davy.g dans le forum Oracle
    Réponses: 6
    Dernier message: 03/07/2007, 11h33
  3. INSERT à partir d'un SELECT avec champ SERIAL
    Par bruno.wiesen dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 21/03/2007, 11h07
  4. Insert select avec BD distante
    Par romuald07 dans le forum Requêtes
    Réponses: 5
    Dernier message: 22/11/2006, 11h10
  5. insertion dans table avec plusieurs clés étrangères
    Par philippe281281 dans le forum Administration
    Réponses: 2
    Dernier message: 14/06/2006, 18h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo