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 et SQL. Discussion :

requête update plusieurs tables [AC-2013]


Sujet :

Requêtes et SQL.

  1. #1
    Membre régulier
    Inscrit en
    Avril 2011
    Messages
    465
    Détails du profil
    Informations forums :
    Inscription : Avril 2011
    Messages : 465
    Points : 97
    Points
    97
    Par défaut requête update plusieurs tables
    Bonjour,

    J'ai une requête SELECT appelée "resultat" basée sur l'association d'une table "source" avec une requête "test".
    J'ai fait cette requête pour comparer 2 champs "cycle1" et "cycle2". « cycle1 » est un champs de la table « source » tandis que « cycle2 » est basé sur un calcul de la requete « resultat ».

    Je souhaiterai faire une requête update qui remplacera le contenu du champs « cycle1 » de la table « source » par le contenu du champs « cycle2 » de ma requête « resultat »

    Le problème et que je n’arrive pas à faire cette requête update.

    Je m’en remet donc à vos connaissances.

    Merci d’avance pour votre aide

  2. #2
    Expert éminent
    Avatar de jimbolion
    Homme Profil pro
    Moulticien
    Inscrit en
    Janvier 2013
    Messages
    3 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Moulticien
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2013
    Messages : 3 150
    Points : 7 001
    Points
    7 001
    Billets dans le blog
    2
    Par défaut
    John Parker bonjour,

    un update dans une requête n'est pas possible puisque de fait ta requête test est déjà de type select.
    Il te faut au travers de ta requête update effectuer une jointure entre ta table source et ta requête test (basé sur un id ou le champ cycle1 si unique). Dans ce cas la requête update est réalisable.

    ta requête ressemblerait alors à çà (après adaptation à tes contraintes)

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE test INNER JOIN Source ON test.N° = Source.N° SET Source.cycle1 = [test]![cycle2] WHERE (((Source.N°)=[test]![N°]));

    en représentation par le qbe :

    Pièce jointe 191085

    Jimbolion
    Images attachées Images attachées  
    N'oubliez pas le Tag si la réponse donnée vous a été utile et pour une réponse pertinente.
    Retrouvez-moi sur le chat en salon base de données

  3. #3
    Membre régulier
    Inscrit en
    Avril 2011
    Messages
    465
    Détails du profil
    Informations forums :
    Inscription : Avril 2011
    Messages : 465
    Points : 97
    Points
    97
    Par défaut
    Bonjour jimbolion,

    Merci d'avoir pris le temps de répondre

    Je viens d'essayer selon ton modèle et ça ne fonctionne pas. J'ai oublié de te préciser que le champs "cycle2" est un champs calculé.

    J'ai essayé en transformant ma requête "resultat" en table, et la requête update fonctionne.

    Je ne comprends pas la logique....

  4. #4
    Expert éminent
    Avatar de jimbolion
    Homme Profil pro
    Moulticien
    Inscrit en
    Janvier 2013
    Messages
    3 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Moulticien
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2013
    Messages : 3 150
    Points : 7 001
    Points
    7 001
    Billets dans le blog
    2
    Par défaut
    John Parker,

    ce que je te disais dans mon premier post :

    un update dans une requête n'est pas possible puisque de fait ta requête test est déjà de type select.
    il faut trouver le lien entre table source et le champ calculé de ta requête test (id ou valeur unique)

    peux tu me fournir un exemple de ton raisonnement dans un fichier accdb zippé (valeurs factices). Je jette un coup d'oeil et te dis comment procéder...

    Cordialement
    N'oubliez pas le Tag si la réponse donnée vous a été utile et pour une réponse pertinente.
    Retrouvez-moi sur le chat en salon base de données

  5. #5
    Membre régulier
    Inscrit en
    Avril 2011
    Messages
    465
    Détails du profil
    Informations forums :
    Inscription : Avril 2011
    Messages : 465
    Points : 97
    Points
    97
    Par défaut
    je suis entrain de te faire un jeu de donnée "bidons". Le problème c'est que je ne rencontre aucun problème avec ce jeu de donnée...

  6. #6
    Expert éminent
    Avatar de jimbolion
    Homme Profil pro
    Moulticien
    Inscrit en
    Janvier 2013
    Messages
    3 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Moulticien
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2013
    Messages : 3 150
    Points : 7 001
    Points
    7 001
    Billets dans le blog
    2
    Par défaut
    John Parker,

    Et en réimportant tes objets dans une nouvelle base puis en modifiant le contenu de la table Source ?

    Jimbolion
    N'oubliez pas le Tag si la réponse donnée vous a été utile et pour une réponse pertinente.
    Retrouvez-moi sur le chat en salon base de données

  7. #7
    Membre régulier
    Inscrit en
    Avril 2011
    Messages
    465
    Détails du profil
    Informations forums :
    Inscription : Avril 2011
    Messages : 465
    Points : 97
    Points
    97
    Par défaut
    Non impossible. En fait ma requête "resultat" est le résultat d'une succession de requête.
    J'ai fait un test en transformant une requête initiale en table, puis en créant une requête "resultat" basée sur ma table "source" ainsi que sur la requête transformée en table.

    j'ai ensuite fait une requête update selon ton modèle (lien entre la table source et la requête "resultat") et la ça fonctionne parfaitement.

    Le problème semble venir de la succession de requête je pense...

  8. #8
    Membre régulier
    Inscrit en
    Avril 2011
    Messages
    465
    Détails du profil
    Informations forums :
    Inscription : Avril 2011
    Messages : 465
    Points : 97
    Points
    97
    Par défaut
    je crois avoir trouvé!

    Dans une de mes requêtes j'ai un "group by", en enlevant ce "group by" ça fonctionne...

    Tu as une explication?

  9. #9
    Expert éminent
    Avatar de jimbolion
    Homme Profil pro
    Moulticien
    Inscrit en
    Janvier 2013
    Messages
    3 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Moulticien
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2013
    Messages : 3 150
    Points : 7 001
    Points
    7 001
    Billets dans le blog
    2
    Par défaut
    John Parker,

    Logique puisqu'il s'agit d'un agrégat et donc n enregistrements groupés. Si tu es capable d'en faire un select sur une nouvelle requête de cette requête group by et refaire une jointure sur ta table source (attention plusieurs enregistrements risquent d'être impactés), tu auras résolu ton problème

    Jimbolion
    N'oubliez pas le Tag si la réponse donnée vous a été utile et pour une réponse pertinente.
    Retrouvez-moi sur le chat en salon base de données

  10. #10
    Membre régulier
    Inscrit en
    Avril 2011
    Messages
    465
    Détails du profil
    Informations forums :
    Inscription : Avril 2011
    Messages : 465
    Points : 97
    Points
    97
    Par défaut
    Merci pour l'explication Jimbolion

    Comment fais tu cela?

    Sinon je peux simplement enlever le group by non?

  11. #11
    Expert éminent
    Avatar de jimbolion
    Homme Profil pro
    Moulticien
    Inscrit en
    Janvier 2013
    Messages
    3 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Moulticien
    Secteur : Santé

    Informations forums :
    Inscription : Janvier 2013
    Messages : 3 150
    Points : 7 001
    Points
    7 001
    Billets dans le blog
    2
    Par défaut
    John Parker,

    le group by n'a à mon sens aucun intérêt pour résoudre ton problème.

    Jimbolion
    N'oubliez pas le Tag si la réponse donnée vous a été utile et pour une réponse pertinente.
    Retrouvez-moi sur le chat en salon base de données

  12. #12
    Membre régulier
    Inscrit en
    Avril 2011
    Messages
    465
    Détails du profil
    Informations forums :
    Inscription : Avril 2011
    Messages : 465
    Points : 97
    Points
    97
    Par défaut
    Du coup ça marche.

    Merci pour ton aide Jimbolion!

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

Discussions similaires

  1. [VB6] RecordSet, Oracle, requête sur plusieurs Tables
    Par pier* dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 13/04/2006, 10h19
  2. Requête sur plusieurs tables
    Par sta_schmitt dans le forum Requêtes
    Réponses: 2
    Dernier message: 28/03/2006, 13h54
  3. Requéte sur plusieurs tables
    Par polux23 dans le forum Requêtes
    Réponses: 11
    Dernier message: 23/02/2006, 23h00
  4. [SQL] Une requête dans plusieurs tables
    Par Anduriel dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 23/12/2005, 16h23
  5. Requête sur plusieurs tables
    Par drinkmilk dans le forum Langage SQL
    Réponses: 8
    Dernier message: 11/07/2005, 12h25

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