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

Access Discussion :

Test clé étrangère valide


Sujet :

Access

  1. #1
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Février 2013
    Messages : 124
    Points : 81
    Points
    81
    Par défaut Test clé étrangère valide
    Bonjour, j'ai 2 tables, PERSONNE et COTIS_SAL

    PERSONNE(ID_PERSO, ...)
    COTIS_SAL(ID_COTIS, ID_PERSO*,...)

    Je n'ai pas encore fais les relation entre elle car je dois tester l'intégrité referentielle des données.
    Donc je veux tester si tous les ID_PERSO de la table COTIS_SAL existent dans la table PERSONNE.

    Mais pour le moment ma requête ne fonctionne pas.
    J'arrive à sortir les valeur égales mais pas les différentes :

    Fonctionne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT *
    FROM COTIS_SAL, PERSONNE
    WHERE COTIS_SAL.ID_PERSO=PERSONNE.ID_PERSO;
    Ne fonctionne pas :
    SELECT *
    FROM COTIS_SAL,PERSONNE
    WHERE COTIS_SAL.ID_PERSO<>PERSONNE.ID_PERSO;

    forcement ça test chaque valeur si elle est égale à chaque ligne de la table personne) Me je ne sais pas comment mis prendre.

    Merci beaucoup
    Dumbl

  2. #2
    Expert éminent

    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    3 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 840
    Points : 7 974
    Points
    7 974
    Par défaut
    Bonsoir,

    C'est un truc classique qui se fait avec l'assistant requête "Requête non-correspondance" sous toutes les versions d'Access qui te donnera un code SQL du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT COTIS_SAL.ID_COTIS, COTIS_SAL.ID_PERSO
    FROM COTIS_SAL LEFT JOIN PERSONNE ON COTIS_SAL.[ID_PERSO] = PERSONNE.[ID_PERSO]
    WHERE (((PERSONNE.ID_PERSO) Is Null));
    Bonne continuation
    Mandresy
    "Je ne sais qu'une chose, c'est que je ne sais rien" Socrate

    N'oublions pas de mettre quand on a trouvé notre bonheur. Soyons sympa pour les futurs heureux.

    Merci, c'est toujours sympa de recevoir des de votre part

  3. #3
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Février 2013
    Messages : 124
    Points : 81
    Points
    81
    Par défaut
    Merci pour la réponse,

    Mais j'aimerais produire un code SQL que je comprend car les macros générer par access je pense ne sont pas toujours optimale,
    la version d'access peut changer dans le temps (alors que le SQL lui évolue par standardisation) et que j'utilise et utiliserai des outils différents d'access.

    Merci
    Dumbl

  4. #4
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Février 2013
    Messages : 124
    Points : 81
    Points
    81
    Par défaut
    C'est bizarre ta requête ne me retourne rien. Il est sûr pourtant que des clé n'existe pas dans la table personne car quand je fais
    SELECT count(COTIS_SAL.ID_PERSO)
    FROM COTIS_SAL, PERSONNE
    WHERE PERSONNE.ID_PERSO=COTIS_SAL.ID_PERSO

    Cela me sort 400818 alors qu'il y a 400826 enregistrements dans la table

  5. #5
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2013
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Février 2013
    Messages : 124
    Points : 81
    Points
    81
    Par défaut
    oups c'est parce que j'ai enlevé les parenthèses.
    Le Is ne doit pas être pris en compte dans le Where dans ce cas

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 31/10/2008, 07h46
  2. Réponses: 8
    Dernier message: 22/05/2006, 09h25
  3. tests de script et clefs étrangères en INSERT
    Par Invité dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 08/08/2005, 17h15
  4. test validation formulaire
    Par Nkubi dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 28/06/2005, 11h22
  5. test et validation de votre programme!!!
    Par l'indien dans le forum C
    Réponses: 8
    Dernier message: 25/06/2003, 15h43

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