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

Requêtes MySQL Discussion :

UPDATE avec Jointure ?


Sujet :

Requêtes MySQL

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2014
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2014
    Messages : 30
    Points : 19
    Points
    19
    Par défaut UPDATE avec Jointure ?
    Bonjour messieurs,

    j'ai deux tables : table personnels (contenant l'ID_personnel, son profil[pilote-copilote-hôtesse-steward], Avion]) et une table vols contenant (ID_vol, état (du vol), pilote, copilote, hôtesse, steward).
    Je cherche la requête qui me permette de mettre à jour la table vols quand je supprime un personnel.
    Pour mieux comprendre mon problème, voici un exemple:
    Au départ :
    table personnels:
    ID_personnel profil avion
    0000 pilote A320
    9999 copilote B777
    table vols :
    ID_vol etat avion pilote copilote hôtesse steward
    TU102 confirmer A320 0000 9999 6666 7777
    TU2015 en vol B777 9999 0000 1234 5678

    Après suppression des 2 lignes de la table personnels, je veux avoir:
    table vols:
    ID_vol etat avion pilote copilote hôtesse steward
    TU102 confirmer A320 null 9999 6666 7777
    TU2015 en vol B777 1023 null 1234 5678

    Alors comment faire ça ??

  2. #2
    Membre averti
    Homme Profil pro
    Consultant PLM
    Inscrit en
    Août 2007
    Messages
    203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Consultant PLM

    Informations forums :
    Inscription : Août 2007
    Messages : 203
    Points : 304
    Points
    304
    Par défaut
    Tu crées une clé étrangère en définissant correctement le ON DELETE : http://dev.mysql.com/doc/refman/5.6/...eign-keys.html

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2014
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2014
    Messages : 30
    Points : 19
    Points
    19
    Par défaut
    Comment faire avec phpMyAdmin ??

  4. #4
    Membre averti
    Homme Profil pro
    Consultant PLM
    Inscrit en
    Août 2007
    Messages
    203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Consultant PLM

    Informations forums :
    Inscription : Août 2007
    Messages : 203
    Points : 304
    Points
    304

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2014
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Janvier 2014
    Messages : 30
    Points : 19
    Points
    19
    Par défaut
    J'ai essayé cette solution mais ça n'a pas marché et c'est pourquoi j'ai demandé votre aide
    Erreur
    Requête SQL:

    ALTER TABLE `vols` ADD FOREIGN KEY ( `ID_vol` ) REFERENCES `gestion_aeroport`.`personnels` (

    `ID_personnel`
    ) ON DELETE RESTRICT ON UPDATE RESTRICT ;

    MySQL a répondu: Documentation

    #1452 - Cannot add or update a child row: a foreign key constraint fails (`gestion_aeroport`.<result 2 when explaining filename '#sql-fd4_77'>, CONSTRAINT `#sql-fd4_77_ibfk_1` FOREIGN KEY (`ID_vol`) REFERENCES `personnels` (`ID_personnel`))

  6. #6
    ced
    ced est déconnecté
    Rédacteur/Modérateur

    Avatar de ced
    Homme Profil pro
    Gestion de bases de données techniques
    Inscrit en
    Avril 2002
    Messages
    6 016
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestion de bases de données techniques
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 016
    Points : 23 705
    Points
    23 705
    Par défaut
    C'est parce que vous placez la clé étrangère sur la mauvaise colonne...
    Là, vous êtes en train de dire que le numéro de vol fait partie des personnels.
    Il faut mettre une clé étrangère sur chacune des colonnes "pilote", "copilote", "hotesse" et "steward".

    Mais mieux que ça, vous pourriez revoir votre modèle de données (afin d'éviter tous ces NULL et ces cascades SET NULL) en créant une table de passage entre "personnels" et "vol", dans laquelle vous ajoutez une colonne "fonction_vol".
    Et le top, c'est que cette colonne pointe sur une table listant toutes les fonctions possibles (pilote, copilote...). Et là, vous obtenez un modèle de données bien plus performant et des requêtes avec de meilleurs perfs.
    Rédacteur / Modérateur SGBD et R
    Mes tutoriels et la FAQ MySQL

    ----------------------------------------------------
    Pensez aux balises code et au tag
    Une réponse vous a plu ? N'hésitez pas à y mettre un
    Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça

Discussions similaires

  1. UPDATE avec jointure
    Par warning dans le forum MS SQL Server
    Réponses: 12
    Dernier message: 13/12/2007, 10h35
  2. Requête UPDATE avec jointure
    Par petburn dans le forum SQL
    Réponses: 7
    Dernier message: 30/07/2007, 14h22
  3. [UPDATE] avec jointure sur une requete
    Par userB dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 20/07/2007, 16h18
  4. Requete update avec jointure d'une requête
    Par bart64 dans le forum Requêtes et SQL.
    Réponses: 10
    Dernier message: 28/05/2007, 20h31
  5. [PL/SQL] update avec jointure
    Par Fox_magic dans le forum Oracle
    Réponses: 6
    Dernier message: 09/12/2004, 12h19

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