none
[RESOLU]Problème dans Update d'une table RRS feed

  • Question


  • Bonjour,

    Je veux mettre à jour le statut de nouveaux adhérents dans la table Tmembres.

    j'ai une requête (RPrep_update_adhérant) qui sélectionne les membres à mettre à jour. 

    Dans le cas présent, elle renvoie 2 noms.

    et j'ai une requête de mise à jour qui change le statut et la date de l'adhérent dans la table Tmembres pour les noms renvoyés par la 1ère requête.

    UPDATE Tmembres SET AdherAn = Yes, DateAdhésion = Date()
    WHERE EXISTS (select * from RPrep_update_adhérant, Tmembres
    WHERE RPrep_update_adhérant.Nomprénom = Tmembres.NomPrénom);

    Lorsque j'exécute cette requête, on m'annonce que je vais mettre à jour 177 enregistrements - cad la totalité de la table Tmembres - et non pas deux ????

    Je n'arrive pas à trouver pourquoi, pouvez-vous m'aider ?


    • Modifié Mauriceb77 jeudi 24 novembre 2016 05:05
    mardi 22 novembre 2016 19:33

Toutes les réponses

  • Bonsoir

    Quelle est la liaison entre les tables RPrep_update_adhérant, Tmembres ? pas de clause join ?

    Arnaud

    mardi 22 novembre 2016 22:38
  • Bonjour,

    la requête RPrep_update_adhérant (pas une table) contient:

    SELECT TParticipant.Nomprénom

    FROM Tparticipant, Tmembres, Rsel_type_adhésion
    WHERE TParticipant.Nomprénom = Tmembres.Nomprénom
    AND TParticipant.Code = Rsel_type_adhésion.code  
    AND TMembres.adheran = NO
    AND TParticipant.Date_paiemt > Rsel_type_adhésion.Dateréunion;

    Il n'y a pas de clause JOIN.

    Finalement, j'ai effectué la modification suivante: j'ai déplacé la condition WHERE TMembres.adheran = NO

    de la 1ère requête dans la 2ème et supprimé la table Tmembres de FROM. Ca devient:

    UPDATE Tmembres SET AdherAn = Yes, DateAdhésion = Date()
    WHERE EXISTS (select * from RPrep_update_adhérant
    WHERE RPrep_update_adhérant.Nomprénom = Tmembres.NomPrénom
    AND TMembres.adheran = NO);

    ça marche, mais je n'ai pas compris pourquoi ça ne donnait pas le bon résultat avant ?

    mercredi 23 novembre 2016 06:22