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 :

Référence à un champ dans une sous-requête


Sujet :

Langage SQL

  1. #1
    Futur Membre du Club
    Inscrit en
    Avril 2008
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 5
    Points : 5
    Points
    5
    Par défaut Référence à un champ dans une sous-requête
    Bonjour à tous!

    J'ai une requête principale qui contient une sous-requête. Cette sous-requête est en fait un champ dans le SELECT de ma requête principale. Je voulais savoir s'il était possible de faire une référence à un des champs de la requête principale à l'intérieur de la sous-requête (je suis pas sur que ça soit clair lol)

    Quelque chose du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SELECT noExemplaire AS Ex, description, 
    (SELECT unChamp FROM autreTable WHERE autreTable.noExemplaire = T1.Ex) AS Disponibilité
    FROM tblExemplaires AS T1
    WHERE noDocuments = 3
    Donc voila, est-ce possible de faire une référence à Ex dans la sous-requête, et si oui comment?

    Merci d'avance pour votre aide!

  2. #2
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 453
    Points : 18 383
    Points
    18 383
    Par défaut
    Oui vous pouvez, mais il ne faut pas utiliser les alias dans la sous-requête.
    Attention ça ne fonctionne que si votre sous-requête du select (on appelle celà une requête scalaire) ne ramène bien qu'une seule valeur.

    Dans votre exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SELECT
        noExemplaire AS Ex,
        description, 
        (SELECT unChamp FROM autreTable WHERE autreTable.noExemplaire = T1.noExemplaire) AS Disponibilité
    FROM tblExemplaires AS T1
    WHERE noDocuments = 3

  3. #3
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 046
    Points
    34 046
    Billets dans le blog
    14
    Par défaut
    Dans la mesure du possible, je ne sais pas si c'est le cas avec votre requête, essayez plutôt de faire une jointure :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT
        T1.noExemplaire AS Ex,
        T1.description, 
        T2.unChamp AS Disponibilité
    FROM tblExemplaires AS T1
    INNER JOIN autreTable T2 ON T2.noExemplaire = T1.noExemplaire
    WHERE noDocuments = 3
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  4. #4
    Futur Membre du Club
    Inscrit en
    Avril 2008
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 5
    Points : 5
    Points
    5
    Par défaut
    Je vous remercie tous les deux pour votre aide!

    Avec la solution de Waldar cela ne marchait pas directement, mais en fait le problème était d'ailleurs. Il ne voulait pas me laisser mettre d'alias sur la table principale... Toutefois, en utilisant directement le nom de la table plus le nom du champs comme vous m'aviez dit (donc aucun alias), bah voila ma requête fonctionne maintenant

    Citation Envoyé par CinePhil Voir le message
    Dans la mesure du possible, je ne sais pas si c'est le cas avec votre requête, essayez plutôt de faire une jointure
    Cela semble effectivement plus simple, toutefois j'ai 3 conditions dans le WHERE de ma requête scalaire (merci Waldar pour le terme ), donc j'imagine que cette solution ne me convient pas? Ou alors il est possible de mettre plusieurs conditions dans la jointure?

  5. #5
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 099
    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 099
    Points : 28 407
    Points
    28 407
    Par défaut
    Citation Envoyé par Gluckens Voir le message
    Ou alors il est possible de mettre plusieurs conditions dans la jointure?
    On peut le faire aussi, de même qu'on peut placer ces conditions dans la clause where de la requête quand il s'agit dune jointure interne...
    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. Appeler le champ d'une sous-requête where dans un select
    Par purplebamboo dans le forum PL/SQL
    Réponses: 2
    Dernier message: 24/06/2013, 15h07
  2. Passer un paramètre dans une sous-requête
    Par Lucier dans le forum Langage SQL
    Réponses: 1
    Dernier message: 09/10/2007, 10h07
  3. Contourner le non-support de limit dans une sous-requête
    Par Christophe Charron dans le forum Requêtes
    Réponses: 7
    Dernier message: 04/09/2007, 10h45
  4. Sélection de tous les champs d'une sous-Requête que je redéfini
    Par electrosat03 dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 28/06/2007, 16h43
  5. Ramener plusieurs champs dans une sous requête...
    Par David.V dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 12/01/2005, 07h54

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