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 :

Verification d'une requête sql


Sujet :

Langage SQL

  1. #1
    Membre régulier
    Inscrit en
    Août 2003
    Messages
    228
    Détails du profil
    Informations forums :
    Inscription : Août 2003
    Messages : 228
    Points : 92
    Points
    92
    Par défaut Verification d'une requête sql
    bonjour,

    j'arrive pas a mettre a jour une table avec une autre,

    pouvez-vous me verifier ma requette?



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    --premiere requette---
    update sarticle set pri_rem=(
    select l.pri_net
    from article a,sarticle s, lregfour l
    where s.cod_cip=a.cod_cip and s.cod_cip=l.cod_cip
    and l.typ_fou<>"f" and l.cod_fou=1135 and l.cod_fac=3348
    and s.dat_ent=l.dat_ent  and a.cod_act="PHN")
    where cod_cip=733964
    pour cette requette, j'ai verifier ce qui est en parenthese, sa fonctionne bien .

    sinon
    j'avais une autre idee plus court , mais sa fonctionne pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    -- 2° requette --
     
    update sarticle set pri_rem=(select max (dat_ent) , cod_cip from lregfour)
    je trouve pas mon erreur; merci de vos idée...
    Commandeur

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    861
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 861
    Points : 965
    Points
    965
    Par défaut
    Bonjour,

    La table sarticle n'a pas besoin de figurer dans votre sous-requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    UPDATE sarticle s
    SET pri_rem = 
    (
     SELECT l.pri_net
     FROM article a
     JOIN lregfour l ON a.cod_cip = l.cod_cip
     WHERE s.cod_cip=a.cod_cip 
     AND s.dat_ent=l.dat_ent 
     AND l.typ_fou<>"f" 
     AND l.cod_fou=1135 
     AND l.cod_fac=3348 
     AND a.cod_act="PHN" 
    )
    WHERE s.cod_cip=733964
    Et de manière générale, lorsque vous avez un problème, essayez d'être plus précis que "je n'arrive pas" ou "ça fonctionne pas", c'est plus simple pour vous aider.
    Un message d'erreur? Aucune ligne updatée? Mauvaise valeur récupérée?

  3. #3
    Membre régulier
    Inscrit en
    Août 2003
    Messages
    228
    Détails du profil
    Informations forums :
    Inscription : Août 2003
    Messages : 228
    Points : 92
    Points
    92
    Par défaut
    oui c'est vrai vous avez raison, mais helas j'avais pas de messge d'erreur , mais sa fonctionne pas.

    merci de ton aide .
    je vais l'assayer de suite
    Commandeur

  4. #4
    Membre régulier
    Inscrit en
    Août 2003
    Messages
    228
    Détails du profil
    Informations forums :
    Inscription : Août 2003
    Messages : 228
    Points : 92
    Points
    92
    Par défaut
    desole mais sa fonctionne pas , elle me dit error ligne 1 position 17

    je n'ai pas preciser , je travail sous linux .

    mon systeme informatique n'aime pas trop les jointures.


    j'ai essayer de faire uniquement la selection qui est entre les parentheses
    sa fonctionne pas, mon systeme ne veux pas de jointure.

    as tu une solution sans jointure?

    Merci de ton aide
    Commandeur

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    861
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 861
    Points : 965
    Points
    965
    Par défaut
    Pas sans jointure, mais sans le mot clé JOIN, oui :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    UPDATE sarticle s
    SET pri_rem = 
    (
     SELECT l.pri_net
     FROM article a, lregfour l 
     WHERE a.cod_cip = l.cod_cip
     AND s.cod_cip=a.cod_cip 
     AND s.dat_ent=l.dat_ent 
     AND l.typ_fou<>"f" 
     AND l.cod_fou=1135 
     AND l.cod_fac=3348 
     AND a.cod_act="PHN" 
    )
    WHERE s.cod_cip=733964
    Lorsque que tu selectionnes des informations de plusieurs tables différentes, et que tu mets une condition d'égalité entre deux colonnes de ces tables, tu fais une jointure. Le mot clé JOIN est simplement une manière plus lisible de décrire une jointure, et c'est la norme depuis plus de 15 ans.

  6. #6
    Membre régulier
    Inscrit en
    Août 2003
    Messages
    228
    Détails du profil
    Informations forums :
    Inscription : Août 2003
    Messages : 228
    Points : 92
    Points
    92
    Par défaut
    je suis desole sa toujours fonctionne pas:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
      update sarticle
      SET pri_rem =
      (
    SELECT l.pri_net
    FROM lregfour l ,sarticle s
    WHERE s.cod_cip = l.cod_cip
    AND s.dat_ent=l.dat_ent
    AND l.typ_fou<>"f"
    AND l.cod_fou=1135
    AND l.cod_fac=3348
      )
      WHERE cod_cip=733964
    je l'ai allege un peu, toujour le même probleme, se qui se trouve entre les parenthese marche, mais pas la mise a jour.

    comment je pourrais faire?

    ont peut etre pas faire une mise a jour et une selection sur la meme table?

    pour plus d'explication:

    je souhaite faire une mise a jour sur la table sarticle avec le dernier prix d'achat dans la table lregfour sur la derniere date d'entrer.

    Merci de ta recherche..
    Commandeur

  7. #7
    Membre éprouvé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    861
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 861
    Points : 965
    Points
    965
    Par défaut
    Ou est passée la table article?

    Donne nous la structure de tes tables, un extrait des données qu'elles contiennent, et ce que tu veux exactement obtenir, ça nous fera sans doute gagner du temps.
    Au passage, quel est ton sgbd et comment lance-tu tes requêtes?

  8. #8
    Membre régulier
    Inscrit en
    Août 2003
    Messages
    228
    Détails du profil
    Informations forums :
    Inscription : Août 2003
    Messages : 228
    Points : 92
    Points
    92
    Par défaut
    ma table article s'appel sarticle

    elle contient
    cod_cip
    pri_ach
    pri_net
    sto_phy
    ect...

    ma table lregfour
    contient toute mes entrees en stock et le prix d'achat

    cod_cip
    dat_ent
    typ_fou
    cod_fou
    cod_fac
    pri_net

    donc je souhaite mettre a jour la table sarticle, le champ pri_net

    avec la derniere entree de la table lregfour

    j'espere que je suis claire.
    Commandeur

  9. #9
    Membre éprouvé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    861
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 861
    Points : 965
    Points
    965
    Par défaut
    Tu as oublié de nommer ton sgbd (Oracle, SQL Server, MySQL ...), et je ne vois pas de jeu de données, mais on va s'en contenter.
    Si on s'en tient à ton dernier post :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    UPDATE sarticle s
    SET pri_net =
    (
     SELECT l.pri_net
     FROM lregfour l, (SELECT cod_cip, max(dat_ent) AS datemax FROM lregfour GROUP BY cod_cip) lmax
     WHERE l.dat_ent = lmax.datemax
     AND l.cod_cip = lmax.cod_cip
     AND s.cod_cip = l.cod_cip
    );
    Reste à savoir à quoi correspond la condition l.typ_fou<>"f" de tes autres posts.
    Au passage, les chaines de caractères sont encadrées par ' , pas par " .

  10. #10
    Membre régulier
    Inscrit en
    Août 2003
    Messages
    228
    Détails du profil
    Informations forums :
    Inscription : Août 2003
    Messages : 228
    Points : 92
    Points
    92
    Par défaut
    je suis desole, il me dit erreur ligne 5 , position 17

    typ_fou
    c'est le type de fournisseur, grossiste ou labo
    Commandeur

  11. #11
    Membre éprouvé
    Profil pro
    Inscrit en
    Août 2008
    Messages
    861
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 861
    Points : 965
    Points
    965
    Par défaut
    Sgbd?

Discussions similaires

  1. Pb sur une requête SQL (de champ vide)
    Par Marion dans le forum Langage SQL
    Réponses: 3
    Dernier message: 01/07/2004, 11h12
  2. Utilisation de MAX dans une requête SQL
    Par Evil onE dans le forum Langage SQL
    Réponses: 7
    Dernier message: 15/06/2004, 18h38
  3. Récupurer via une requête SQL la valeur la plus proche
    Par yoda_style dans le forum Langage SQL
    Réponses: 9
    Dernier message: 27/04/2004, 13h52
  4. Résultat d'une requète SQL
    Par camino dans le forum Bases de données
    Réponses: 2
    Dernier message: 21/02/2004, 15h22
  5. A propos d'une requête SQL sur plusieurs tables...
    Par ylebihan dans le forum Langage SQL
    Réponses: 2
    Dernier message: 14/09/2003, 16h26

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