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

Développement SQL Server Discussion :

Soucis sur une requete UPDATE imbriquée


Sujet :

Développement SQL Server

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    9
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 9
    Points : 9
    Points
    9
    Par défaut Soucis sur une requete UPDATE imbriquée
    Bonjour, j'ai un soucis avec une requête UPDATE imbriquée qui me retourne plusieurs résultats (j'ai regardé la solution du select imbriquée mais je sèche...)

    3 tables:
    - AM_Employee (Employee_ID, Department_ID)
    - AM_Department (Department_ID)
    - AM_Asset (Asset_ID, Employee_ID, Department_ID)

    Je souhaite crée une requête global de mise à jour de AM_Asset pour reprendre le Department_ID de l'employé et l'affecter aux biens (AM_Asset).

    UPDATE AM_ASSET SET DEPARTMENT_ID =
    (SELECT AM_EMPLOYEE.DEPARTMENT_ID
    FROM AM_EMPLOYEE INNER JOIN AM_ASSET AS AM_ASSET_2 ON AM_ASSET_2.EMPLOYEE_ID = AM_EMPLOYEE.EMPLOYEE_ID)

    WHERE (EMPLOYEE_ID =
    (SELECT AM_EMPLOYEE_1.EMPLOYEE_ID
    FROM AM_EMPLOYEE AS AM_EMPLOYEE_1 INNER JOIN AM_ASSET AS AM_ASSET_1 ON AM_ASSET_1.EMPLOYEE_ID = AM_EMPLOYEE_1.EMPLOYEE_ID))
    Note: L'employé pouvant avoir plusieurs biens

  2. #2
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    9
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 9
    Points : 9
    Points
    9
    Par défaut
    bon je me suis trop compliqué, la simple requête suivante fonctionne:

    UPDATE AM_ASSET
    set DEPARTMENT_ID=
    (
    SELECT B.DEPARTMENT_ID
    FROM AM_EMPLOYEE AS B
    WHERE B.EMPLOYEE_ID=AM_ASSET.EMPLOYEE_ID
    )

  3. #3
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Points : 12 371
    Points
    12 371
    Par défaut
    Bonjour,

    Vous pouvez faire encore plus propre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    UPDATE AM_ASSET
    SET DEPARTMENT_ID = B.DEPARTMENT_ID
    FROM AM_ASSET AS A
    JOIN AM_EMPLOYEE AS B ON B.EMPLOYEE_ID = AM_ASSET.EMPLOYEE_ID
    Cela vous évite en plus la jointure triangulaire

    @++

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    9
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 9
    Points : 9
    Points
    9
    Par défaut
    Merci à vous,
    En effet l'exécution de ma requête sur 2500 lignes prend environ 10min sur mon portable (1,8 ghz, 2Go Ram) [temps chronométré dans l'interface utilisateur et non dans l'analyser de requête MSSQL].

    Je testerais le temps d'exécution de votre requête et vous remercie vivement pour votre réponse rapide!


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

Discussions similaires

  1. Soucis sur une requete imbriquée
    Par Gregory.M dans le forum Développement
    Réponses: 3
    Dernier message: 17/03/2009, 21h29
  2. [MySQL] souci sur une requete avec jointure
    Par fey dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 08/09/2008, 11h11
  3. erreur sur une requete UPDATE
    Par haymen dans le forum C#
    Réponses: 6
    Dernier message: 14/08/2008, 18h03
  4. Erreur de syntaxe sur une Requete Update
    Par samtheh dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 01/06/2007, 13h07
  5. INNER JOIN sur une requete UPDATE
    Par Immobilis dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 06/03/2006, 14h05

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