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 :

update special


Sujet :

Langage SQL

  1. #1
    En attente de confirmation mail
    Inscrit en
    Août 2002
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 84
    Points : 33
    Points
    33
    Par défaut update special
    bonjour;
    voici ce que je veux faire et je n'y arrive pas:
    j'ai une table <ARTICLE> et une autre table de <sortie de stock>.
    je veux on une seule requette parcourir la table <sortie de stock> et mettre a jour les quantité au niveau de la table <ARTICLE>.
    exemple


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    update article set stock=stock+Sortie.qt where 
               ref=(select ref_art from sortie)
    je sais que ce n'est pas ça dutout ,le compilateur va me dire déjà "Qt" introuvable;
    j'espere que je me suis bien fait comprendre.
    Merci

  2. #2
    Expert confirmé Avatar de Cybher
    Homme Profil pro
    Consultant réseaux et sécurité
    Inscrit en
    Mai 2005
    Messages
    3 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Consultant réseaux et sécurité
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 281
    Points : 4 644
    Points
    4 644
    Par défaut
    quel sgbd?
    il autorise les jointures avec update?

  3. #3
    Membre régulier
    Inscrit en
    Septembre 2007
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 63
    Points : 71
    Points
    71
    Par défaut
    Citation Envoyé par kivoch
    UPDATE article SET stock=stock+Sortie.qt WHERE
    ref=(SELECT ref_art FROM sortie)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    update article A set A.stock = A.stock + (
    select B.Sortie 
    from sortie B where A.ref = B.ref_art
    )
    where A.ref in ( select B.ref_art from sortie B)
    j'ai essayé ca devrait marcher mais a adapter dans ton cas

  4. #4
    En attente de confirmation mail
    Inscrit en
    Août 2002
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 84
    Points : 33
    Points
    33
    Par défaut
    Merci les gars, je vais essayé ça

  5. #5
    En attente de confirmation mail
    Inscrit en
    Août 2002
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 84
    Points : 33
    Points
    33
    Par défaut
    les gars ya probleme;
    j'ai le message d'erreur suivant :
    "L'operation doit utiliser une requête qui peut être mise à jour"
    alors j'utilise delphi 6 ,ACCESS ;
    et voici la requête que j'ai exécuter :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Update article A set A.stock='
                 +'(Select sum(B.qt) from sortie B where A.ref=B.refart)'
                 +' Where A.ref in (Select C.refart from sortie C where C.refdoc=1')
    la sytaxe est correcte mais erreure;
    Merci

  6. #6
    Expert éminent
    Homme Profil pro
    Big Data / Freelance EURL
    Inscrit en
    Mars 2003
    Messages
    2 124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Big Data / Freelance EURL

    Informations forums :
    Inscription : Mars 2003
    Messages : 2 124
    Points : 7 291
    Points
    7 291
    Par défaut
    Scinder les requêtes est souvent une solution sous Access.

    Je te proposes de:
    • créer une sous-requête "SOUS_REQ" avec un SELECT sur sortie et article
    • faire la requête UPDATE Article qui sera jointe avec la sous-requête SOUS_REQ préablement créée

  7. #7
    En attente de confirmation mail
    Inscrit en
    Août 2002
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 84
    Points : 33
    Points
    33
    Par défaut
    excuse moi j'ai pas bien compris. la solution que tu propose est sous delphi ou bien sous access. moi j'ai une solution pour le moment mais elle n'est pas optimale. je fait un select des articles que je doit mettre a jour leur stock et puis je parcour l'ensemble de données grace a une boucle du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    var qte:real;
     i:integer;
    begin
     req.Close;req.SQL.Clear;
     req.SQL.add('select * from sortie where refdoc=1');
     req.Open ;
    for i:=1 to req.RecordCount do
     begin
      req1.close;req1.SQL.Clear;
      req1.sql.add('select sum(qt) from sortie where refart='
                        +quotedstr(req.FieldByName('refart').AsString);
      req1.open;
      qte:=req1.fields[0].asfloat;
     
     
      req1.close;req1.sql.clear;
      req1.sql.add('update article set stock='+floattostr(qte)
                  +' where ref='+quotedstr(req.FieldByName('refart').AsString));
      req.next;
    end;
    voilà merci;

  8. #8
    Expert éminent
    Homme Profil pro
    Big Data / Freelance EURL
    Inscrit en
    Mars 2003
    Messages
    2 124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Big Data / Freelance EURL

    Informations forums :
    Inscription : Mars 2003
    Messages : 2 124
    Points : 7 291
    Points
    7 291
    Par défaut
    ma solution était sous Access.

  9. #9
    En attente de confirmation mail
    Inscrit en
    Août 2002
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 84
    Points : 33
    Points
    33
    Par défaut
    Merci quand meme ,mais ce que je veux moi est une solution sous delphi.
    Merci

  10. #10
    Expert éminent
    Homme Profil pro
    Big Data / Freelance EURL
    Inscrit en
    Mars 2003
    Messages
    2 124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Big Data / Freelance EURL

    Informations forums :
    Inscription : Mars 2003
    Messages : 2 124
    Points : 7 291
    Points
    7 291
    Par défaut
    Tu as entièrement raison de vouloir tout faire en une seule requête, le problème est qu'Access a des limites. Ta première requête fonctionnerait a priori sans problème sur un SGBD "normal".


    Mais j'y penses, à propos de "L'operation doit utiliser une requête qui peut être mise à jour", est-ce que tu as utiliser le bon composant dans Delphi ? Est-ce que tu as bien défini une clé primaire dans le composant et sur la table à mettre à jour ?
    Est-ce que tu utilises la bonne méthode Delphi qui n'est pas la même entre les requêtes SELECT et UPDATE ?

    Trouvé sur internet:
    PROBLÈME : ASP renvoie une erreur 'L'opération doit utiliser une requête qui peut être mise à jour' (doit être transposable à ton souci),
    L'opération doit utiliser une requête qui peut être mise..=>Clé Unique

  11. #11
    En attente de confirmation mail
    Inscrit en
    Août 2002
    Messages
    84
    Détails du profil
    Informations forums :
    Inscription : Août 2002
    Messages : 84
    Points : 33
    Points
    33
    Par défaut
    j'ai bien defini des clés primaires pour chaque table. Miantenant est ce que la requete fonctionne sur un autre SGBD , la je ne peux rien dire, sauf que la requete me parait semantiquement correcte.
    Merci

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. Pb d'update dans une DataGrid
    Par bidson dans le forum XMLRAD
    Réponses: 11
    Dernier message: 27/05/2003, 15h11
  3. [dBase]il y a mieux que la commande sql UPDATE ?
    Par sana72 dans le forum Autres SGBD
    Réponses: 4
    Dernier message: 12/12/2002, 12h59
  4. Réponses: 3
    Dernier message: 10/11/2002, 12h03
  5. update et virgule
    Par Delph dans le forum Bases de données
    Réponses: 8
    Dernier message: 27/08/2002, 15h40

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