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 de non correspondance.


Sujet :

Requêtes et SQL.

  1. #1
    Membre à l'essai
    Inscrit en
    Janvier 2005
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 34
    Points : 19
    Points
    19
    Par défaut Requête de non correspondance.
    Bonjour,
    Ai cherché sur le site mais n ai rien trouvé concernant mon problème.
    Je me suis servie de l assistant requete de non correspondance pour comparer 2 tables.Mon problème est que l assistant ne propose de comparer qu un champ.
    Pour que ma recherche soit correcte, moi j ai besoin de sélectionner l enregistrement si UN des TROIS champs (critères) de recherche diffère.(exemple: CODE PRODUIT-MOIS DE VENTE-ANNEE DE VENTE)
    Ai tenté d ajouter mes 2 autres champs dans la requete en mettant "Est Null" dans la ligne "ou" de critère mais ca ne marche pas.
    Ai tenté ensuite d afficher en SQL et ai changé les OR en AND ca ne marche pas non plus mais je ne suis pas une championne de SQL.Je suis sure qu il doit y avoir une possibilté de le faire.Quelqu un peut m aider?
    exemple
    table A:
    CODE PRODUIT-MOIS-ANNEE
    ABC-05-2006
    ABC-06-2006
    ABC-07-2006
    Table B
    ABC-05-2006
    ABC-09-2006
    ABC-07-2005
    DEF-05-2006
    La requête devrait me donner le résultat
    ABC-09-2006
    ABC-07-2005
    DEF-05-2006
    Merci de votre aide

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 98
    Points : 123
    Points
    123
    Par défaut
    Bonjour,

    SQL suivant fonctionne,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT TB2.[code produit], TB2.mois, TB2.annee, TB1.[code produit], TB1.mois, TB1.annee
    FROM TB1 RIGHT JOIN TB2 ON (TB1.annee = TB2.annee) AND (TB1.mois = TB2.mois) AND (TB1.[code produit] = TB2.[code produit])
    WHERE (((TB1.[code produit]) Is Null));
    si ça convient pas tu as la possibilité de créer un 4eme champs 'CLEF'sur une requete TB1, de meme sur TB2 et de faire une requete de non correspondance entre ces deux champs CLEF, sauf que tu auras 3 requetes...

    A+

  3. #3
    Membre expérimenté
    Avatar de Mahefasoa
    Homme Profil pro
    Manager IT
    Inscrit en
    Octobre 2003
    Messages
    835
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Manager IT

    Informations forums :
    Inscription : Octobre 2003
    Messages : 835
    Points : 1 664
    Points
    1 664
    Par défaut
    Salut euskal75,

    L'assistant Requête de non correpondance que propose Access, devrait t'avoir inspiré car si c'est possible avec un seul champ il serait possible avec n champ.
    Pour ton problème, il y a plusieurs solutions mais je n'exposerai qu'une seule. Voici le principe:
    - lier les trois champs des deux tables avec une jointure externe droite (table A - table B)
    - ajouter les trois champs de la table B
    - ajouter les trois champs de la table A (sans les afficher)
    - placer le critère suivant sur chaque champ de la table A: Est Null sur différence ligne dans la ligne critère afin d'obtenir un OU (OR)
    - est exécuter la requête!
    Voila comment on le fait en visuel.
    Je te propose ci-dessous le code SQL de la requête
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT TblB.CODE, TblB.MOIS, TblB.ANNEE
    FROM TblA RIGHT JOIN TblB ON (TblA.ANNEE = TblB.ANNEE) AND (TblA.MOIS = TblB.MOIS) AND (TblA.CODE = TblB.CODE)
    WHERE (((TblA.CODE) Is Null)) OR (((TblA.MOIS) Is Null)) OR (((TblA.ANNEE) Is Null));
    J'ai repris les données que tu as transmis en exemple et j'ai bel et bien obtenu le résultat.
    Je ne sais si c'est valable chez toi mais en tout cas, bon courage et @+

  4. #4
    Membre à l'essai
    Inscrit en
    Janvier 2005
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 34
    Points : 19
    Points
    19
    Par défaut
    merci ! Désolée de répondre si tard, ai eu un souci de connexion....
    Et en effet ca marche.(ai essayé la solution de mahefasoa)

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

Discussions similaires

  1. "Opération annulée" sur requête de non-correspondance
    Par tedparker dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 23/11/2009, 17h18
  2. Requête de non-correspondance dans une relation n-n
    Par N0wan dans le forum Langage SQL
    Réponses: 1
    Dernier message: 08/04/2007, 16h52
  3. Requête de non correspondance et Ajout
    Par gentoo dans le forum Access
    Réponses: 5
    Dernier message: 29/01/2007, 13h52
  4. Réponses: 1
    Dernier message: 28/06/2006, 13h31
  5. Cas spécial de requête de non-correspondance
    Par Floch dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 21/06/2006, 12h19

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