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 :

Difficultés liées à une requête d'exclusion (EXCEPT) [AC-2010]


Sujet :

Requêtes et SQL.

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Août 2007
    Messages
    248
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 248
    Points : 134
    Points
    134
    Par défaut Difficultés liées à une requête d'exclusion (EXCEPT)
    Bonjour !

    Je bloque pour contourner l'absence de EXCEPT dans Access.

    TABLE A : idHabitat
    TABLE B : numHabitat,numPiece

    A une occurrence de A peuvent correspondre plusieurs occurrences de B.
    Je cherche à compter les idHabitat pour lesquels la pièce 99 n'est pas référencée.
    TABLE A
    1
    2
    3
    4
    5
    TABLE B
    1-1
    1-99
    3-7
    4-1
    5-99
    RESULTAT ESCOMPTE
    2 (idHabitat=3 ou 4)

    La requête suivante fonctionne mais est très lente compte tenu de la volumétrie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Select count(idHabitat) from A where idHabitat not in (select numHabitat from B where numPiece=99);
    La requête suivante ne fonctionne pas puisque le résultat est 3 (idHabitat = 1 ou 3 ou 4)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Select count(idHabitat) from A left join B on idHabitat=numHabitat where numPiece<>99);
    L'idéal aurait été :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Select idHabitat from A EXCEPT (Select numHabitat from B where numPiece<>99);
    Quoiqu'ainsi on n'obtient pas le compte des idHabitat correspondant.

    Pourriez-vous m'aider?
    Je lis actuellement le tutoriel actuel http://sqlpro.developpez.com/cours/sqlaz/jointures/ mais je ne m'y retrouve pas tellement...

  2. #2
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    12 620
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 12 620
    Points : 56 857
    Points
    56 857
    Billets dans le blog
    40
    Par défaut
    Bonjour,

    sous Access on peut passer par une sous-requête :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT count(idHabitat)
    FROM A LEFT JOIN (select numHabitat from B where numPiece=99) T
    ON A.idHabitat=T.numHabitat
    WHERE T.numHabitat IS NULL

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Août 2007
    Messages
    248
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 248
    Points : 134
    Points
    134
    Par défaut
    Excellent !!! Merci !
    Mais comment aurai-je pu savoir cela?!

    Ca fait vraiment plaisir que les grands aident les petits, merci.

  4. #4
    Responsable Arduino et Systèmes Embarqués


    Avatar de f-leb
    Homme Profil pro
    Enseignant
    Inscrit en
    Janvier 2009
    Messages
    12 620
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 12 620
    Points : 56 857
    Points
    56 857
    Billets dans le blog
    40
    Par défaut
    En fait le LEFT JOIN... WHERE...IS NULL est la solution SQL générée par l'assistant Requête de non-correspondance. Il suffit d'adapter le principe

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

Discussions similaires

  1. Difficulté dans une requête
    Par starr dans le forum Requêtes
    Réponses: 4
    Dernier message: 09/05/2008, 23h29
  2. Résultat d'une requête d'exclusion "<>"
    Par clemced dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 13/03/2008, 17h35
  3. Difficulté pour une requête
    Par neotracks dans le forum Langage SQL
    Réponses: 1
    Dernier message: 22/05/2007, 10h59
  4. [VBA] difficultés avec une requête INSERT
    Par elias dans le forum Access
    Réponses: 7
    Dernier message: 06/09/2005, 14h53
  5. Difficulté à construire une requête
    Par coolcpu dans le forum Langage SQL
    Réponses: 6
    Dernier message: 08/10/2003, 00h43

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