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 :

Référence à une autre table INNER JOIN


Sujet :

MS SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Rédacteur
    Avatar de Erakis
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2003
    Messages
    523
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 523
    Par défaut Référence à une autre table INNER JOIN
    Bonjour à tous,

    J'aimerais comprendre pourquoi, SQL Server m'empêche de faire référence à une valeur générer précédement dans une sous-requête étant en jointure.

    Je m'explique par cette requête :
    Ne cherchez pas à comprendre la logique de cette requête dénouée de sens, il n'y en a tout simplement pas. Ce n'est que pour démontrer le problème auquel je fais face en ce moment. Car, la requête original est beaucoup trop volumineuse pour être écrite ici..

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    DECLARE @MaTable TABLE (Code INT)
    
    SELECT MaTable.*
    FROM @MaTable AS MaTable
    INNER JOIN
    (
    	SELECT (Code / 2) AS Valeur1
    	FROM @MaTable
    )
    AS MaTableEnfant1
    	ON MaTable.Code = MaTableEnfant1.Valeur1
    	INNER JOIN
    	(
    		SELECT (MaTableEnfant1.Valeur1 / 4) AS Valeur2
    		FROM @MaTable
    	)
    	AS MaTableEnfant2
    		ON MaTable.Code = MaTableEnfant2.Valeur2
    Où il y a un bout de code en rouge, je reçoit un erreur me disant que ce champs n'existe pas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    The multi-part identifier "MaTableEnfant1.Code" could not be bound.
    Pourtant il est bien générer par la table précédante 'MaTableEnfant1'. Alors pourquoi ne veut-il pas y faire référence ?

    Merci du coup de main.

  2. #2
    Rédacteur
    Avatar de Erakis
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2003
    Messages
    523
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 523
    Par défaut
    Je crois avoir compris le problème, toutefois je ne suis vraiment pas sur.

    Enfin Dites-moi si je me trompe ?

    Cette partie de la requête est d'abord exécutée !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    SELECT (MaTableEnfant1.Valeur1 / 4) AS Valeur2
    		FROM @MaTable
    Enfin, comme elle est exécutée avant qu'il y est jointure, alors le résultat de la table 'MaTableEnfant1' n'existe pas encore.

    Ce qui nous donne l'erreur

  3. #3
    Modérateur

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Janvier 2005
    Messages
    5 826
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2005
    Messages : 5 826
    Par défaut
    Bonjour,

    Votre sous-requête ne spécifie pas MaTableEnfant1 mais @MaTable.
    Écrivez directement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT (Valeur1 / 4) AS Valeur2
    FROM MaTableEnfant1
    @++

  4. #4
    Rédacteur
    Avatar de Erakis
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2003
    Messages
    523
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 523
    Par défaut
    Évidemment ! Je l'avais pas remarqué celle-là. Je me couche peut-être trop tard

    Désolé

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

Discussions similaires

  1. Requête update à partir d'une autre table
    Par amiral thrawn dans le forum Langage SQL
    Réponses: 5
    Dernier message: 15/02/2024, 11h40
  2. [MySQL] Comment modifier un champ qui fait référence à une autre table ?
    Par geeka dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 04/08/2014, 12h51
  3. Réponses: 4
    Dernier message: 06/05/2009, 19h15
  4. Réponses: 2
    Dernier message: 18/12/2008, 16h24
  5. [CR] Afficher un champs lié à un champs d'une autre table
    Par Madduck dans le forum SAP Crystal Reports
    Réponses: 3
    Dernier message: 17/09/2003, 11h48

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