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

Développement SQL Server Discussion :

Quoi choisir Not in ou Not exists ? [2008R2]


Sujet :

Développement SQL Server

  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2013
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2013
    Messages : 67
    Par défaut Quoi choisir Not in ou Not exists ?
    Bonjour à tous.

    - j'ai une table nommé certification qui contient 3 champs : CIN , Zone_Id ,Date_Certification , et j'ai une requête qui me retourne la cin , zone_id et d'autre champ , alors je veux savoir les cin,et les zone_id qui n'ont pas dans la table certification , sachant qu'un cin peux ce répéter plusieurs fois mais avec une zone id différent , et merci de votre aide

  2. #2
    Membre éclairé
    Homme Profil pro
    Développeur Full-stack
    Inscrit en
    Novembre 2010
    Messages
    373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur Full-stack

    Informations forums :
    Inscription : Novembre 2010
    Messages : 373
    Par défaut
    Salut,

    Avant tout poste , il convient de lire et de se conformer aux règles de postage du forum ici-->REGLES.

    Maintenant, revenons à ton écrit. Il n'y a aucune requête, montre d'abord, ce que tu as fais, et ensemble , nous allons l’améliorer.

    Cordialement.

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2013
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2013
    Messages : 67
    Par défaut
    Oui voici ce que j'ai fait :

    - Ma table :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select CIN,Zone_ID from Certifications where CIN='BE828411'
    Nom : Certif.PNG
Affichages : 107
Taille : 1,6 Ko
    - Ma requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select CIN,Zone_ID from Last_FormationEquipierParZoneFinal where CIN='BE828411'
    Nom : query.PNG
Affichages : 113
Taille : 3,0 Ko

    je veux afficher la partie encadré en bleu , et merci beaucoup

  4. #4
    Membre éclairé
    Homme Profil pro
    Développeur Full-stack
    Inscrit en
    Novembre 2010
    Messages
    373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur Full-stack

    Informations forums :
    Inscription : Novembre 2010
    Messages : 373
    Par défaut
    Tu sais une question mal formulée est difficile à résoudre, lis ta citation suivante:
    Citation Envoyé par hamza_azerty Voir le message
    Bonjour à tous.

    ...alors je veux savoir les cin,et les zone_id qui n'ont pas dans la table certification ...
    je crois comprendre que tu voulais savoir cin, et les zone_id qui ne sont pas contenus dans la table certification. Ne connaissant pas les DDL de tes tables, il est difficile de faire requête comme tu le demandes.
    Au passage, j'ai souligné la redondance de l'information dans tes tables

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    
    
    select CIN,Zone_ID from Certifications where CIN='BE828411'
    et

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    select CIN,Zone_ID from Last_FormationEquipierParZoneFinal where CIN='BE828411'

    Donc revois les compositions de tes tables, pour que nous trouvions une solution.



    La condition where sur un seul champ est facile à executer, mais sur plusieurs il faudra passer les requêtes recursives CTE

  5. #5
    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
    Par défaut
    Bonjour,

    Vous pouvez faire comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    SELECT 
        CIN
        ,Zone_ID 
    FROM Last_FormationEquipierParZoneFinal L
    LEFT OUTER JOIN Certifications  C
        ON    L.CIN = C.CIN
        AND   L.Zone_ID = C.Zone_ID 
    WHERE L.CIN='BE828411'
    AND C.CIN IS NULL

  6. #6
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2013
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2013
    Messages : 67
    Par défaut
    Bon je m'explique plus :
    --- Voici les tables principale de ma requête :
    Nom : Shéma BDD.PNG
Affichages : 114
Taille : 20,1 Ko

    alors chaque candidat passe ces formations et ces formations sont des postes et chaque poste appartient à une zone , et lorsqu'il fini tous les postes d'une zone il doit passer une certif sur la zone avec une date de certification .

    et ma requête me renvoie les candidats qui ont fini toutes ces formations dans une zone avec la dernière date de formation :
    Nom : Capture.PNG
Affichages : 118
Taille : 23,7 Ko

    j'ai crée cette requête pour faire une comparaison avec la table certifications si les CIN et les zone_ID n'existe pas dans la table certifications , donc c'est ils n'ont pas encore faite (manquants) ,et mon but final c'est de savoir le nombre des certifications manquants par mois .

    j’espère que j'ai bien expliqué , et merci beaucoup de votre aide !!

  7. #7
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2013
    Messages
    67
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2013
    Messages : 67
    Par défaut
    Merci beaucoup 'aieeeuuuuu' Ouuf j'ai pas oublié un 'u' , ton code marche très bien , et merci à tous .

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

Discussions similaires

  1. NOT IN et NOT EXISTS
    Par rsc dans le forum SQL
    Réponses: 10
    Dernier message: 20/09/2012, 08h06
  2. remplacer NOT IN par NOT EXISTS
    Par Louisa2005 dans le forum SQL
    Réponses: 5
    Dernier message: 25/03/2010, 10h04
  3. NOT IN et NOT EXISTS TRES long
    Par jdonet dans le forum Langage SQL
    Réponses: 5
    Dernier message: 23/09/2009, 18h10
  4. Refonte génération tableaux de bord. L'existant:Excel.Quoi choisir pr industrialiser?
    Par efowl dans le forum Approche théorique du décisionnel
    Réponses: 12
    Dernier message: 30/07/2008, 17h16
  5. [9i] Not in ou not exists
    Par billout9 dans le forum SQL
    Réponses: 9
    Dernier message: 30/10/2007, 09h36

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