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 :

SELECT en tant que condition?


Sujet :

MS SQL Server

  1. #1
    Membre extrêmement actif Avatar de cortex024
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 301
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 301
    Points : 1 119
    Points
    1 119
    Par défaut SELECT en tant que condition?
    Bonjour...

    j'aimerais pour ne pas devoir faire 2 requêtes séparées faire un SELECT dans une tablesuivant une condition; condition étant en fait une liste donnée par un SELECT.

    j'ai donc une table_B qui contient entre autre un champ ID_candidat et un ID_personne.

    pour un ID_personne donné, je voudrais trouver tous les ID_candidat, et avec cette liste d'ID_candidat renvoyer toutes les lignes d'une table_A qui contiennent cet ID_candidat...

    je voyais quelque chose comme cela mais ca ne passe pas:

    SELECT Nom, Prenom FROM Table_A WHERE (ID_candidat=SELECT ID_candidat FROM Table_B WHERE (ID_personne=X))
    pouvez vous m'aider?

    merci

  2. #2
    Membre confirmé
    Avatar de jpelaho
    Homme Profil pro
    Consultant ERP
    Inscrit en
    Avril 2006
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

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

    Informations forums :
    Inscription : Avril 2006
    Messages : 120
    Points : 487
    Points
    487
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT Nom, Prenom 
    FROM Table_A 
    WHERE ID_candidat IN ( SELECT ID_candidat FROM Table_B WHERE ID_personne = X )

  3. #3
    Rédacteur/Modérateur

    Avatar de Fabien Celaia
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2002
    Messages
    4 224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2002
    Messages : 4 224
    Points : 19 566
    Points
    19 566
    Billets dans le blog
    25
    Par défaut
    ceci dit, je préfère quand même la tournure
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SELECT Nom, Prenom 
    FROM Table_A  A inner join   Table_B B 
    ON A.ID_candidat = B.ID_Candidat  
    WHERE  B.ID_personne = X

  4. #4
    Membre extrêmement actif Avatar de cortex024
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    1 301
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 301
    Points : 1 119
    Points
    1 119
    Par défaut
    la solution de jpelaho fonctionne, et je la trouve plus claire que la seconde...

    merci, c'est résolu

  5. #5
    Membre confirmé
    Avatar de jpelaho
    Homme Profil pro
    Consultant ERP
    Inscrit en
    Avril 2006
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

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

    Informations forums :
    Inscription : Avril 2006
    Messages : 120
    Points : 487
    Points
    487
    Par défaut
    Salut à tous,

    Excuse moi cortex024, mais je voudrais revenir sur ce débat pour moi aussi apprendre.

    Quand j'ai vu la proposition de facade je me suis tout de suite intéressé à comparer les deux requêtes. Etant novice dans cet aspect (comparaison des requêtes, lecture du plan d'exécution de SQL Server ...) Je me tourne vers facade, toi et les autres pour comprendre ce que SQL Server va faire dans les deux cas et quelles sont les conditions qui vont optimiser l'une ou l'autre des requêtes.

    A première vue je pense que comme tu as un index sur ID_candidat, les select avec un IN seront plus rapides que la jointure. facade est ce que ce raisonnement tient ? Merci de m'éclairer.

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

Discussions similaires

  1. Boucle tant que copie si condition
    Par salluste dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 10/07/2014, 17h13
  2. Copier tant que avec condition
    Par salluste dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 02/07/2014, 09h57
  3. Faire un SELECT de type "tant que" sur un champs
    Par RPGamer dans le forum Requêtes
    Réponses: 6
    Dernier message: 17/12/2011, 15h33
  4. Condition tant que (do while)
    Par act_stat dans le forum SAS Base
    Réponses: 1
    Dernier message: 29/09/2009, 09h47
  5. [DROIT] Droits d'auteurs moraux en tant que salariés ?
    Par malotte dans le forum Juridique
    Réponses: 14
    Dernier message: 13/02/2003, 15h56

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