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 :

MAJ table à partir d'une autre table


Sujet :

Requêtes MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juillet 2008
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 21
    Par défaut MAJ table à partir d'une autre table
    bonjour

    je me lance dans MySql et je suis un peu désorienté par rapport à ma connaissance des requêtes en VB ou VBA

    voilà mon pb

    j'ai deux tables avec un champ commun "Article"

    je voudrais pouvoir ajouter à la tbl2 les enregistrements de tbl1 où "Article" ne se trouve pas sachant que par ailleurs tbl1.chpX doit avoir la valeur '8E' et que SUM(tbl1.chpY) doit être >0.

    tbl1 comporte 40 champs dont Article, chpX et chpY.
    Article peut avoir des doublons (plusieurs magasins)

    tbl2 comporte 3 champs :
    Article
    Stock qui doit recevoir la valeur de SUM(tbl1.chpY)
    Dte_Stock qui doit correspondre à la date du jour

    j'ai testé en vain beaucoup de possibilité, mais au mieux la rqt me retourne tous les chps de tbl1 correspondants au critères 8E et >0 y compris ceux se trouvant déjà dans tbl2
    De plus mon total sur chpY est faux

    la dernière étant grosso modo :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    INSERT INTO tbl2(Article, Stock,Dte_Stock)
    FROM tbl1,tbl2
    WHERE tbl1.Article<>tbl2.Article
    GROUP BY tbl1.Article
    HAVING tbl1.chpX='8E' AND SUM(tbl1.Stock)>0;
    où me plantais je ?


    merci d'avance pour votre aide

    Claude

  2. #2
    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 065
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Loiret (Centre)

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

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 065
    Par défaut
    Bonjour,

    Il faut faire les choses par étapes . Tout d'abord, définir la requête qui permet d'avoir les articles de Tbl1 qui ne sont pas Tbl2, qui vérifient les critères imposés, avec le total de leur stock.
    Pour faire ça, il faut passer à la syntaxe SQL-92 (que je vous recommande) et faire une jointure à gauche :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT tbl1.Article, SUM(tbl1.Stock)
    FROM tbl1
    LEFT JOIN tbl2 on tbl1.Article = tbl2.Article
    WHERE tbl2.Article IS NULL
    AND tbl1.chpX = '8E'
    GROUP BY tbl1.Article, tbl1.chpX
    HAVING SUM(tbl1.Stock)>0;
    Attention, cette requête ne somme que les stocks des articles dont chpX vaut 8E (et pas tous les Articles quels que soit chpX). A vous de vérifier si c'est bien ce que vous souhaitez.

    Une fois que la requête de sélection vous semble correcte, alors vous insérez dans tbl2 par la syntaxe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    INSERT INTO tbl2 (Article, Stock, Dte_Stock)
    SELECT tbl1.Article, SUM(tbl1.Stock), NOW()
    FROM tbl1
    LEFT JOIN tbl2 on tbl1.Article = tbl2.Article
    WHERE tbl2.Article IS NULL
    AND tbl1.chpX = '8E'
    GROUP BY tbl1.Article, tbl1.chpX
    HAVING SUM(tbl1.Stock)>0;
    J'ai un doute sur l'utilisation du NOW() ainsi que sur la nécessité ou pas de le mettre dans le GROUP BY... A vérifier...

    ced
    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

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

Discussions similaires

  1. SQL Update d'une table à partir d'une autre table
    Par Jean-Marc68 dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 16/03/2007, 13h22
  2. creer une autre table à partir d'une requete
    Par papou34 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 15/02/2007, 22h42
  3. Réponses: 4
    Dernier message: 03/06/2006, 12h45
  4. remplir un champ d'une table à partir d'une autre table
    Par MrsFrizz dans le forum Langage SQL
    Réponses: 4
    Dernier message: 11/02/2005, 16h48
  5. Réponses: 5
    Dernier message: 06/01/2005, 12h07

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