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 :

The multi-part identifier "AccRight.accessPointId" could not be bound.


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de diaboloche
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    592
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2004
    Messages : 592
    Par défaut The multi-part identifier "AccRight.accessPointId" could not be bound.
    Bonjour...

    Je bloque sur cette requete, il me donne l'erreur suivante (SQL server 2005) :

    Msg 4104, Level 16, State 1, Line 2
    The multi-part identifier "AccRight.accessContractId" could not be bound.
    Msg 4104, Level 16, State 1, Line 2
    The multi-part identifier "AccRight.accessPointId" could not be bound.




    Merci de votre aide

  2. #2
    Membre Expert Avatar de pacmann
    Homme Profil pro
    Consulté Oracle
    Inscrit en
    Juin 2004
    Messages
    1 626
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Consulté Oracle
    Secteur : Distribution

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 626
    Par défaut
    Salut !

    A défaut de résoudre ton problème, des petites remarques de mise en forme :
    - Si tu enlèves "exec sp_executesql N'", on aura le syntax highlight (qui est bloqué à cause de la quote)

    - ta clause WHERE est assez moche...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    WHERE (((((((((((AccContrVersion.state = ''Running'' AND AccPtVers.state = ''Running'') AND AccContrVersion.endDate > @p0) AND conVers.endDate > @p1) AND CompVers.endDate > @p2) AND AccPtVers.endDate > @p3) AND AccRight.endDate > @p4) AND localProductionUnit = @p5) AND direction = @p6) AND AccRight.dayNight = @p7) AND PersonAccount.account = @p8) AND CompanyVersionCodeElia.codeTypeId LIKE ''C11'') ORDER BY AccRight.ID ASC, compVers.beginDate ASC, accPtVers.beginDate ASC  ',N'@p0 datetime,@p1 datetime,@p2 datetime,@p3 datetime,@p4 datetime,@p5 bit,@p6 nvarchar(7),@p7 bit,@p8 nvarchar(10)',@p0='Jan  1 2004 12:00:00:000AM',@p1='Jan  1 2004 12:00:00:000AM',@p2='Jan  1 2004 12:00:00:000AM',@p3='Jan  1 2004 12:00:00:000AM',@p4='Jan  1 2004 12:00:00:000AM',@p5=1,@p6=N'offtake',@p7=0,@p8=N'ISOEXT\CRE'
    Je crois que tu n'as que des "AND", donc pas besoin de parenthèses. Essaie de ne pas tous les mettre sur la même ligne... ça sera plus lisible

    Et pour en venir quand même à ton problème... est-ce que ça marche si tu enlèves "AccRight.*," de ta requête ?

  3. #3
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    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 818
    Billets dans le blog
    14
    Par défaut
    Wow ! Balèze la requête !

    Quelques petites choses à revoir :
    1) Eviter de mélanger l'ancienne syntaxe des jointures, obsolète depuis 1992, avec FROM a, b et la nouvelle normalisée avec JOIN. N'utiliser que celle avec JOIN.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    FROM VCC_AccessRight AS AccRight, 
      TCC_Connection_ConnectionPoint AS connectionConnectionPoint 
     
    INNER JOIN TCC_AccessContract AS AccContr ON AccRight.accessContractId = AccContr.Id
    2) Je n'ai pas trouvé de condition de jointure entre TCC_Connection_ConnectionPoint et VCC_AccessRight ou une autre table jointe à VCC_AccessRight.

    3) La table PersonAccount mentionnée dans la jointure ci-dessous est manquante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INNER JOIN TCC_Person AS Personxxx ON PersonAccount.personId = Personxxx.id
    4) Des doubles apostrophes pour entourer des valeurs textuelles ? C'est lié au fait que c'est dans une procédure ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    AccContrVersion.state = ''Running''
    5) Toutes ces égalités dans le ORDER BY, je ne comprends pas non plus mais c'est peut-être dû à la syntaxe de la procédure SQL Server que je ne connais pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    @p0 = 'Jan  1 2004 12:00:00:000AM',
    Voici la requête remise en forme qui permet de voir les problèmes que j'ai évoqués ci-dessus :
    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    SELECT 
      AccRight.*, 
      AccContr.id AS accessContractId, 
      AccContr.reference AS refence, 
      AccContrVersion.beginDate AS accContrVersBeginDate, 
      AccContrVersion.endDate AS accContrVersEndDate, 
      Comp.id AS companyId, 
      CompanyVersionCodeElia.codeValue AS ACHShortName, 
      CompVers.Id AS compVersionId, 
      CompVers.beginDate AS compVersionBeginDate, 
      CompVers.endDate AS compVersionEndDate, 
      Conn.Id AS connectionId, 
      conVers.maxPowerOfftake AS connPMax, 
      conVers.maxPowerOfftake AS maximumPowerOfftake, 
      conVers.maxPowerInjection AS maximumPowerInjection, 
      conVers.beginDate AS conVersBeginDate, 
      conVers.endDate AS conVersEndDate, 
      ConnPt.id AS connectionPointId, 
      Accpt.displayName AS accessPointDisplayName, 
      address.city AS city, 
      address.country AS country, 
      address.countryCodeId AS countryCode, 
      address.street AS street, 
      address.zipCode AS zipCode, 
      regInfo.country AS regionInfoCountryCode, 
      regInfo.subcityZipcode AS subcityZipcode, 
      regInfo.province AS province, 
      regInfo.subcity AS subcity, 
      Accpt.eanCode AS accessPointEanPoint, 
      AccPtVers.CVLId AS accPtVersCVLId, 
      AccPtVers.beginDate AS accPtVersBeginDate, 
      AccPtVers.EndDate AS accPtVersEndDate 
    FROM VCC_AccessRight AS AccRight, 
      TCC_Connection_ConnectionPoint AS connectionConnectionPoint 
     
    INNER JOIN TCC_AccessContract AS AccContr ON AccRight.accessContractId = AccContr.Id 
      INNER JOIN TCC_AccessContractVersion AS AccContrVersion ON AccContrVersion.accessContractId  = AccContr.Id 
      INNER JOIN TCC_Company AS Comp ON AccContr.companyId = Comp.id 
        INNER JOIN TCC_CompanyVersion AS CompVers ON Comp.id = CompVers.id AND CompVers.state = ''Running'' 
          LEFT OUTER JOIN TCC_CompanyVersion_Code AS CompVersCode ON CompVers.id = CompVersCode.companyVersionId 
          LEFT OUTER JOIN TCC_CompanyVersion_Code AS CompanyVersionCodeElia ON CompVers.id=CompanyVersionCodeElia.companyVersionId 
    INNER JOIN TCC_AccessPoint AS AccPt ON AccPt.id = AccRight.accessPointId 
      INNER JOIN TCC_AccessPointVersion AS AccPtVers ON AccPt.id = AccPtVers.accessPointId 
      LEFT OUTER JOIN TCC_AccessPoint_Connection AS pointCon ON pointCon.accessPointId = AccPt.id 
        LEFT OUTER JOIN TCC_Connection AS Conn ON pointCon.connectionId = Conn.id AND connectionConnectionPoint.connectionId = Conn.id 
          LEFT OUTER JOIN TCC_ConnectionVersion AS conVers ON Conn.id = conVers.connectionId 
      LEFT OUTER JOIN TCC_Site AS site ON AccPt.siteId = site.addressId 
        LEFT OUTER JOIN TCC_ContactAddress AS address ON site.addressId = address.id 
          LEFT OUTER JOIN TCC_RegionInfo AS regInfo ON address.regionInfoId = regInfo.id, TCC_Person_Account AS PersonAccount 
     
    LEFT OUTER JOIN TCC_ConnectionPoint AS ConnPt ON ConnPt.id = connectionConnectionPoint.connectionPointId 
     
    INNER JOIN TCC_Person AS Personxxx ON PersonAccount.personId = Personxxx.id 
     
    WHERE AccContrVersion.state = ''Running'' 
      AND AccPtVers.state = ''Running''
      AND AccContrVersion.endDate > @p0
      AND conVers.endDate > @p1
      AND CompVers.endDate > @p2
      AND AccPtVers.endDate > @p3
      AND AccRight.endDate > @p4
      AND localProductionUnit = @p5
      AND direction = @p6
      AND AccRight.dayNight = @p7
      AND PersonAccount.account = @p8
      AND CompanyVersionCodeElia.codeTypeId LIKE 'C11'
     
    ORDER BY AccRight.ID ASC, compVers.beginDate ASC, accPtVers.beginDate ASC  
      ',N'@p0 datetime, @p1 datetime, @p2 datetime, @p3 datetime, @p4 datetime, @p5 bit, @p6 nvarchar(7), @p7 bit,@p8 nvarchar(10)',
      @p0 = 'Jan  1 2004 12:00:00:000AM',
      @p1 = 'Jan  1 2004 12:00:00:000AM',
      @p2 = 'Jan  1 2004 12:00:00:000AM',
      @p3 = 'Jan  1 2004 12:00:00:000AM',
      @p4 = 'Jan  1 2004 12:00:00:000AM',
      @p5 = 1,
      @p6 = N'offtake',
      @p7 = 0,
      @p8 = N'ISOEXT\CRE'
    Quand à l'interprétation du message d'erreur, je laisse ça aux spécialistes de SQL Server.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    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
    Membre éclairé Avatar de diaboloche
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    592
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2004
    Messages : 592
    Par défaut
    Merci de vos réponses.

    en effet... c'est pas fort propre (c'est du code généré à partir d'un core vb).
    Je vais réécrire from scratch pour y voir plus clair.

    Bonne journée

Discussions similaires

  1. [2012] the multi part identifier could not be bound
    Par Axel_Rose dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 18/06/2013, 17h44
  2. The multi-part identifier "congé.cin" could not be bound.
    Par Gabox dans le forum Développement
    Réponses: 1
    Dernier message: 18/05/2012, 03h06
  3. update+The multi-part identifier
    Par jawadi95 dans le forum Développement
    Réponses: 2
    Dernier message: 02/06/2008, 10h31

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