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 :

Comment comparer ou rechercher la valeur d'un champ dans deux tables et même base ? possible ?


Sujet :

Requêtes et SQL.

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    460
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 460
    Points : 71
    Points
    71
    Par défaut Comment comparer ou rechercher la valeur d'un champ dans deux tables et même base ? possible ?
    Bonjour,

    Après plusieurs recherches infructueuses, je souhaiterais savoir comment faire simplement pour comparer ou rechercher les valeurs de mon champ C table A si ils sont présents dans la Table B champ B, en gros je dois comparer une à une chaque ligne (800 lignes) et si la réf de ma colonne C retrouve les mêmes réferences dans l'autre table alors dans un autre champs à l'aide d'une requette mettre la lettre P (pour présent
    ) à chaque ligne.

    Pouvez vous me montrer avec un exemple simple explicite comment faire faut-il lier les tables ?? etc... la requête à créer la condition à faire ? ou autre car je bloque MERCI pour votre aide...

  2. #2
    Membre chevronné
    Inscrit en
    Août 2006
    Messages
    1 588
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 1 588
    Points : 2 178
    Points
    2 178
    Par défaut
    Bonjour,
    ce devrait être
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    UPDATE TableA INNER JOIN TableB ON TableA.c = TableB.b SET TableA.present = "P";
    le champ present de TableA est marqué P si TableA.c = TableB.b

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    460
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 460
    Points : 71
    Points
    71
    Par défaut
    Tout d'abord merci à vous Helas pour votre aide mais cependant : la requête fonctionne qu'une seule fois je m'explique lorsque je lance la requête la lettre p s'affiche très bien dans la colonne "p" si elle trouve la réf identique OK, par contre lorsque je fais une modif d'un réf dans la table la lettre p reste toujours figée je suis obligé de supprimer manuellement les réf une à une puis relancer la requête est ensuite la mise à jour ce fait. Je pense qu'il faudrait inclure une mise à jour delete toute les réf champ "p" puis relancer la requête update ? au lieu de le faire manuellement y-a-t-il une solution bcp plus simple car cela fonctionne pas quand je modifie la réf d'un champs c le p reste toujour même après relance de la requête update.
    Deplus est -il possible de mettre 'NP" pour réf non présente, je sais pas faire. Je bloque, merci pour votre aide

  4. #4
    Membre actif
    Homme Profil pro
    Développeur amateur
    Inscrit en
    Mars 2009
    Messages
    177
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur amateur

    Informations forums :
    Inscription : Mars 2009
    Messages : 177
    Points : 270
    Points
    270
    Par défaut
    Bonjour,
    il faut utiliser une jointure droite de la table A vers la table B et determiner le statut de presence par la fontion iif.
    *
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE TableA LEFT JOIN TableB ON TableA.c = TableB.b SET TableA.present =iif( TableB.b is null; "NP";"P") ;
    cordialement

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    460
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 460
    Points : 71
    Points
    71
    Par défaut
    1-/ Merci pour votre réponse, mais il y a une erreur de syntaxe dans l'expression ( message access).

    2-/ Est-il possible d'avoir la mise à jour automatiquement au lieu de supprimer tout les champs à la main.

    Merci pour votre aide.

  6. #6
    Membre actif
    Homme Profil pro
    Développeur amateur
    Inscrit en
    Mars 2009
    Messages
    177
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur amateur

    Informations forums :
    Inscription : Mars 2009
    Messages : 177
    Points : 270
    Points
    270
    Par défaut
    Salut,

    Correction faite. L'erreur provenait du point virgule que j'ai remplacé par virgule


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UPDATE TableA LEFT JOIN TableB ON TableA.c = TableB.b SET TableA.present =iif( TableB.b is null, "NP","P");
    Concernant ta deuxième question, la réponse est OUI. Chaque fois que la requête est exécutée, le statut de présence est recalculé pour l'ensemble des individus de la table A.

    Cordialement

  7. #7
    Membre chevronné
    Inscrit en
    Août 2006
    Messages
    1 588
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 1 588
    Points : 2 178
    Points
    2 178
    Par défaut
    On peut effacer le champ "présent" avant de lancer la requete
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    UPDATE TableA SET TableA.present = Null;

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    460
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 460
    Points : 71
    Points
    71
    Par défaut
    bonjour,

    Comment faire pour faire les deux en une seule requête sans lancer les deux à chaque fois ?
    Car je vais mettre un bonton de commande pour les mises à jour

    Merci pour votre aide

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 17
    Points : 19
    Points
    19
    Par défaut
    Bonjour,
    Je ne sais pas si l'on peut intégrer les 2 requête en une seules, en revanche tu peux créer un bouton qui va lancer les 2 requêtes succéssivement.
    Tu peux faire cela en créant une macro qui contient 2 lignes "Exécuter SQL" puis appeler cette macro quand tu cré le bouton.
    Autre solution : tu crée un bouton qui lance une requête, puis tu modifies le code VBA pour ajouter la deuxième requête.

  10. #10
    Membre actif
    Homme Profil pro
    Développeur amateur
    Inscrit en
    Mars 2009
    Messages
    177
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur amateur

    Informations forums :
    Inscription : Mars 2009
    Messages : 177
    Points : 270
    Points
    270
    Par défaut
    Bonjour,
    Au cas où je me serais fait mal comprendre: le sql que j'ai donné dans mon précédent post est suffisant à lui tout seul. Vous n'avez pas besoin de le faire préceder par celui qui permet de vider le champ " présence ".
    Essayez le et vous verrez

    cordialement

Discussions similaires

  1. Recherche de valeur max et comparaison dans une table
    Par maxmusix dans le forum VBA Access
    Réponses: 1
    Dernier message: 30/05/2013, 16h41
  2. rechercher la valeur d'un champs dans les champs d'une autre table
    Par aloe-vera dans le forum Développement de jobs
    Réponses: 4
    Dernier message: 02/08/2012, 14h53
  3. Réponses: 5
    Dernier message: 15/11/2011, 23h42
  4. Modifier la valeur d'un champs dans une table mysql en fonction du temps.
    Par VaSss dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 03/05/2010, 11h30
  5. Réponses: 1
    Dernier message: 31/08/2009, 22h48

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