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 :

Requête Update avec Select.


Sujet :

Langage SQL

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    5
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Mars 2003
    Messages : 5
    Points : 5
    Points
    5
    Par défaut Requête Update avec Select.
    Bonjour,

    J'ai une base avec 4 Tables différentes : Table des projets (Projets), table des nomenclatures (Bom), table des quantités de prototypes (Project_proto), et une table temporaire (tmp_procurement) qui consolide tous les besoins en articles par semaine pour les prototypes.
    Pour sortie des 3 premières tables, les besoins par article pour une semaine donnée j'ai écrit la requête suivante qui fonctionne à merveille :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SELECT tmp_procurement.no_piece, Sum(Project_proto.quantite) AS Besoin
    FROM ((tmp_procurement LEFT JOIN Bom ON tmp_procurement.no_piece = Bom.no_piece) LEFT JOIN Projets ON Bom.no_bom = Projets.no_bom) LEFT JOIN Project_proto ON Projets.no_projet = Project_proto.no_projet
    WHERE (((Project_proto.no_projet)<>"") AND ((Project_proto.semaine_proto)="808") AND ((Project_proto.date_out)="0000-00-00"))
    GROUP BY tmp_procurement.no_piece;
    Je voudrais maintenant mettre à jour la Table tmp_procurement qui ne contient que deux champs : no_piece et W808 mais je n'arrive pas à l'écrire.

    J'ai essayé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    UPDATE tmp_procurement SET 808 = (SELECT Sum(Project_proto.quantite)
    FROM ((tmp_procurement LEFT JOIN Bom ON tmp_procurement.no_piece = Bom.no_piece) LEFT JOIN Projets ON Bom.no_bom = Projets.no_bom) LEFT JOIN Project_proto ON Projets.no_projet = Project_proto.no_projet
    WHERE (((Project_proto.no_projet)<>"") AND ((Project_proto.semaine_proto)="808") AND ((Project_proto.date_out)="0000-00-00"))
    GROUP BY tmp_procurement.no_piece)
    WHERE tmp_procurement.no_piece=Bom.no_piece;
    mais il semble que Bom.no_piece ne soit pas qualifier ?

    J'ai également essayé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    UPDATE ((tmp_procurement LEFT JOIN Bom ON tmp_procurement.no_piece = Bom.no_piece) LEFT JOIN Projets ON Bom.no_bom = Projets.no_bom) LEFT JOIN Project_proto ON Projets.no_projet = Project_proto.no_projet
    SET 808 = Sum(Project_proto.quantite)
    WHERE (((Project_proto.no_projet)<>"") AND ((Project_proto.semaine_proto)="808") AND ((Project_proto.date_out)="0000-00-00") AND  ((tmp_procurement.no_piece)=Bom.no_piece))
    GROUP BY tmp_procurement.no_piece);
    mais là c'est le GROUP BY qui ne passe pas.

    Si un expert des requêtes de chocs peut m'aiguiller ?

  2. #2
    Membre averti
    Profil pro
    Développeur Web
    Inscrit en
    Septembre 2004
    Messages
    352
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Septembre 2004
    Messages : 352
    Points : 434
    Points
    434
    Par défaut
    Cette requête ne fait pas ce que tu désires (mise à jour du champ 808) ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    UPDATE tmp_procurement SET 808 = (
        SELECT tmp_procurement.no_piece, Sum(Project_proto.quantite) AS Besoin
        FROM tmp_procurement
             LEFT JOIN Bom ON (tmp_procurement.no_piece = Bom.no_piece)
             LEFT JOIN Projets ON (Bom.no_bom = Projets.no_bom)
             LEFT JOIN Project_proto ON (Projets.no_projet = Project_proto.no_projet)
        WHERE Project_proto.no_projet <> ''
              AND Project_proto.semaine_proto = '808'
              AND Project_proto.date_out = '0000-00-00'
        GROUP BY tmp_procurement.no_piece
    );
    Tu mets tellement de () inutile qu'on finit par ne plus se retrouver.

    J'y pense à quelque chose : Il me semble qu'on ne peut pas faire un UPDATE sur une table sur laquelle on fait actuellement un SELECT. Cela reste à confirmer.

Discussions similaires

  1. Requête update avec un select sur la même table
    Par sheira dans le forum Requêtes
    Réponses: 6
    Dernier message: 15/09/2010, 16h09
  2. [Delphi6,Access] Requête update avec select imbriqué
    Par magicstar dans le forum Débuter
    Réponses: 3
    Dernier message: 30/03/2009, 19h40
  3. Requête update avec select imrbiqué
    Par Woufeigh dans le forum Requêtes
    Réponses: 1
    Dernier message: 05/05/2008, 00h43
  4. Requête update avec un select
    Par housni dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 11/08/2007, 00h22
  5. [VB.NET] [ODBC] Pb requête UPDATE avec clé primaire..?
    Par Pleymo dans le forum Windows Forms
    Réponses: 7
    Dernier message: 09/03/2005, 18h46

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