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 :

Faire un UPDATE à partir d'une sélection avec jointure


Sujet :

Langage SQL

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 32
    Points : 21
    Points
    21
    Par défaut Faire un UPDATE à partir d'une sélection avec jointure
    Bonjour, tout est dans le titre mais pas forcément très explicite, alors voici mon problème :


    j'ai d'un côté une table HEURES avec un identifiant collaborateur (ex ID_COLL) et un taux horaire (ex. : Tx_Horaire)

    De l'autre côté j'ai une table RESSOURCES avec l'identifiant collaborateur ID_COLL, et un code fonction (ID_FONC)

    En gros table HEURES :
    ID_COLL | x_Horaire |...
    puis table RESSOURCES :
    ID_COLL | ID_FONC |...

    ce que je voudrais faire :

    Je voudrais faire un UPDATE de la table Heures pour mettre à jour la colonne Tx_Horaire pour les Collaborateurs (ID_COLL) ayant un ID_FONC = x...

    Comme je suis un piètre "SQLien", je ne vois pas comment m'y prendre, pouvezvous m'aider à y voir + clair ?

    merci d'avance,

    CL

  2. #2
    Expert confirmé
    Avatar de pc75
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    3 662
    Détails du profil
    Informations personnelles :
    Âge : 69
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 3 662
    Points : 4 047
    Points
    4 047
    Par défaut
    Bonjour,

    Si j'ai tout compris ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    update HEURES set Tx_Horaire = '???' where ID_FONC = x

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 32
    Points : 21
    Points
    21
    Par défaut
    merci pour ta réponse, le problème c'est justement que ID_FONC n'appartient pas à la table HEURES, donc ma question est comment filtrer ma requête d'UPDATE sur ce champ qui appartient à une autre table dont la clé de liaison ait ID_COLL.

    en espérant avoir été plus clair cette fois-ci.

    merci d'avance.

    CL

  4. #4
    Expert confirmé
    Avatar de pc75
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    3 662
    Détails du profil
    Informations personnelles :
    Âge : 69
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 3 662
    Points : 4 047
    Points
    4 047
    Par défaut
    Ok,

    Alors un truc comme ça ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    UPDATE HEURES SET Tx_Horaire = '???' 
    WHERE ID_COLL = (select ID_COLL from RESSOURCES WHERE ID_FONC = x)

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 32
    Points : 21
    Points
    21
    Par défaut
    merci,

    ça ressemblerait davantage à cela sauf que j'obtiens un message d'erreur "la sous-requête a retoruné plusieurs valeurs. Cela n'est pas autorisé quand la sous-requête suit =....

    je pense que cela vient du fait que dans ma table "RESSOURCES" j'ai plusieurs lignes avec "ID_FONC = x" et que par conséquent larequête renvoie plusieurs ID_COLL.

    que faire dans ce cas pour que ma requête porte sur tous les collaborateurs ayant un ID_FONC = x ?

  6. #6
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 453
    Points : 18 394
    Points
    18 394
    Par défaut
    Remplacez le égal par un IN dans le WHERE et vous serez bon !

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

Discussions similaires

  1. Requête update à partir d'une autre table
    Par amiral thrawn dans le forum Langage SQL
    Réponses: 5
    Dernier message: 15/02/2024, 12h40
  2. [Doctrine] Faire une sélection avec une relation "inversée"
    Par Gp2mv3 dans le forum ORM
    Réponses: 2
    Dernier message: 08/02/2011, 20h23
  3. Réponses: 2
    Dernier message: 26/12/2006, 23h40
  4. Réponses: 1
    Dernier message: 23/08/2006, 21h11
  5. Fonction de zoom à partir d'une sélection souris
    Par mick74 dans le forum OpenGL
    Réponses: 2
    Dernier message: 13/08/2004, 22h41

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