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

MS SQL Server Discussion :

NOT IN, NOT EXISTS


Sujet :

MS SQL Server

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Février 2008
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 1
    Points : 1
    Points
    1
    Par défaut NOT IN, NOT EXISTS
    Bonjour a tous,

    J'ai un petit probleme concernant les commandes NOT IN et NOT EXISTS.
    J'essaye de faire marcher cette requete :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SELECT DISTINCT ExPOId
    FROM   dbo.PurcHdr P0, dbo.PurcDet P1
    WHERE P0.InPurcId = P1.ExPurcId 
    	AND P0.PurcType = 2
    	AND NOT EXISTS (
    		SELECT DISTINCT ExPOId
    		FROM   dbo.PurcHdr P2, dbo.PurcDet P3
    		WHERE P2.InPurcId = P3.ExPurcId and (P2.PurcType = 3)
    	)
    Je veux en fait recuperer toutes les ExPoId de type 2 qui ne sont pas egalement de type 3 (ExPoId n'est pas une PK). Le probleme : j'obtiens toujours 0 resultats, alors qu'en lancant les 2 requetes separement je sais que je dois recuperer des valeurs.

    Quelqu'un a une idee?
    Juste un truc, je ne peux pas me permettre d'utiliser un EXCEPT puisque je compte utiliser la commande dans une view.

    Merci d'avance,
    Vincent.

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    774
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : Canada

    Informations forums :
    Inscription : Juillet 2005
    Messages : 774
    Points : 936
    Points
    936
    Par défaut
    essai not in
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SELECT DISTINCT ExPOId
    FROM   dbo.PurcHdr P0, dbo.PurcDet P1
    WHERE P0.InPurcId = P1.ExPurcId 
    	AND P0.PurcType = 2
    	AND ExPOId NOT IN (
    		SELECT DISTINCT ExPOId
    		FROM   dbo.PurcHdr P2, dbo.PurcDet P3
    		WHERE P2.InPurcId = P3.ExPurcId AND (P2.PurcType = 3)
    	)

  3. #3
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 852
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 852
    Points : 52 992
    Points
    52 992
    Billets dans le blog
    6
    Par défaut
    Normale, la sous requête n'est pas corrélée. Sans corrélation de la sous requête EXISTS, le prédicat reverra toujours vide ou plein quelque soit les lignes scrutées.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    SELECT DISTINCT ExPOId
    FROM   dbo.PurcHdr P0
           INNER JOIN dbo.PurcDet P1
                 ON P0.InPurcId = P1.ExPurcId 
    WHERE  P0.PurcType = 2
      AND NOT EXISTS (SELECT *
                      FROM   dbo.PurcHdr P2 
                             INNER JOIN dbo.PurcDet P3
                                   ON P2.InPurcId = P3.ExPurcId
                      WHERE  P2.PurcType = 3
                        AND  P2.InPurcId = P0.InPurcId ) --> corrélation avec la requête externe...
    A +

Discussions similaires

  1. [AC-2003] Requête (not in, <>, not like) Probleme
    Par Walid(Tun) dans le forum Access
    Réponses: 4
    Dernier message: 22/09/2010, 22h12
  2. [XL-2003] If Not. Or Not. ?
    Par pasdoy dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 09/08/2010, 19h45
  3. BINARY, NOT IN, NOT EQUAL... et les Index !
    Par Acti dans le forum Requêtes
    Réponses: 2
    Dernier message: 23/03/2006, 17h22
  4. PROBLEME AVEC LES REQUETES IS NULL / NOT EXISTS
    Par sylvaine dans le forum Langage SQL
    Réponses: 5
    Dernier message: 04/06/2004, 13h26
  5. spécifier NOT NULL - champ existant
    Par internet_killer dans le forum PostgreSQL
    Réponses: 11
    Dernier message: 06/05/2004, 10h24

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