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

Langage SQL Discussion :

[ACCESS 2007] Requête sur la non-existence d'un champ d'une table


Sujet :

Langage SQL

  1. #1
    Membre du Club
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juin 2011
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juin 2011
    Messages : 81
    Points : 58
    Points
    58
    Par défaut [ACCESS 2007] Requête sur la non-existence d'un champ d'une table
    Bonjour

    N'étant pas doué sur les requêtes SQl avancées (d'autant plus que ça fait longtemps que je n'en ai plus fait), je cherche un peu d'aide pour construire une requête SQL entre 2 tables d'une même base de données Access 2007

    Je m'explique :
    1)J'ai deux tables TAB1 et TAB2

    2)Chaque table possède 2 colonnes COLONNE1, COLONNE2.

    TAB1 | TAB2

    A | C1 | A | C1
    A | C2 | A | C5
    A | C3 | A | C8
    B | C4 | A | C10
    B | C1 | B | C2
    B | C3 | B | C4


    3) Je voudrais que, pour chaque TAB1.COLONNE1 = TAB2.COLONNE1 , on regarde si TAB1.COLONNE2 existe dans TAB2.COLONNE2 (toujours avec la condition que TAB1.COL1 = TAB2.COL1), et si la réponse est non, on affiche la ligne correspondante de TAB1.

    J'ai essayé plusieurs fois de faire cette requête et ça ne me renvoie jamais le résultat attendu. De plus, ayant un nombre très important de lignes dans chacun des tableaux, les requêtes mettent 10 plombes à s'exécuter.

    Je ne sais pas si j'ai été très clair, mais en tout cas, merci de votre aide.

  2. #2
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    Bonjour,

    sur le principe :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    SELECT *
    FROM TAB1
    WHERE NOT EXISTS(
        SELECT 1
        FROM TAB2
        WHERE TAB2.Colonne1 = TAB1.Colonne1
        AND TAB2.Colonne2 = TAB1.Colonne2
    )

  3. #3
    Membre du Club
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juin 2011
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juin 2011
    Messages : 81
    Points : 58
    Points
    58
    Par défaut
    merci de ta réponse, je vais essayer de l'adapter à mon problème ! J'ai juste une question : à quoi correspond le "select 1" concrètement ?

  4. #4
    Membre du Club
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juin 2011
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juin 2011
    Messages : 81
    Points : 58
    Points
    58
    Par défaut
    Bon, sur les 3000 et quelques lignes qui m'ont été retournées en réponse de la requête, j'en ai vérifié une dizaine, et ça m'a l'air correct, donc merci beaucoup ! Lors de mes premiers essais, je n'étais pas vraiment loin de la solution, il me manquait juste le "select 1".

    En tout cas, merci encore pour ta réponse rapide

  5. #5
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 080
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 080
    Points : 30 802
    Points
    30 802
    Par défaut
    Citation Envoyé par candrau Voir le message
    à quoi correspond le "select 1" concrètement ?
    Dans la sous-requête utilisée avec EXISTS, ce qui nous intéresse ce n'est pas le contenu des lignes trouvées mais seulement si ces lignes sont trouvées.
    Pour cette raison, les valeurs retournées par le SELECT n'ont aucune importance et, en utilisant une constante, on a moins de chances que même le SGBD le plus mal conçu aille chercher des informations inutiles.
    Modérateur Langage SQL
    Règles du forum Langage SQL à lire par tous, N'hésitez pas à consulter les cours SQL
    N'oubliez pas le bouton et pensez aux balises
    [code]
    Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
    Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.

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

Discussions similaires

  1. Requête SQL pour obtenir les intitulés des champs d'une table
    Par Zakapatul dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 01/12/2008, 09h51
  2. Tester l'existence d'un champ dans une table
    Par Raphael_74 dans le forum WebDev
    Réponses: 1
    Dernier message: 29/02/2008, 15h58
  3. Requête avec plusieurs paramètres d'un même champ d'une table
    Par jb.julien dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 21/08/2007, 09h43
  4. Existance d'un champ dans une table
    Par hesky dans le forum Access
    Réponses: 5
    Dernier message: 12/03/2007, 18h39
  5. Tester l'existence d'un champ dans une table
    Par Oluha dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 05/09/2005, 11h19

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