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 :

Le préfixe de colonne de correspond ni au nom de table ni au nom d'alias lors de ma jointure


Sujet :

Langage SQL

  1. #1
    Membre actif Avatar de maxeur
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    416
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 416
    Points : 267
    Points
    267
    Par défaut Le préfixe de colonne de correspond ni au nom de table ni au nom d'alias lors de ma jointure
    Bonjour à tous,

    J'essaye de faire évoluer une requête en y rajoutant une information d'une autre table.

    Le problème est que lorsque j'essaie de rajouter la jointure sur mon autre table, j'ai une erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Le préfixe de colonne 'test' ne correspond ni au nom de table ni au nom d'alias utilisés dans la requête.
    Voila la requete :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    SELECT test.Commentaires as IncidentComment,
        JOURNAL.[ID JOURNAL] AS IDJournal, JOURNAL.[DATE ENTREE] AS DateEntree, JOURNAL.[DATE SORTIE] AS DateSortie, JOURNAL.CODE AS CodeClient, 
        CASE WHEN F_COMPTET.CT_Sommeil = 1 THEN '(en sommeil)' END AS SommeilClient, F_COMPTET.CT_Intitule AS IntituleClient, F_COMPTET.CT_Telephone AS TelephoneClient, F_COMPTET.CT_Telecopie AS TelecopieClient, 
        JOURNAL.[REFERENCE CLIENT] AS ReferenceClient, JOURNAL.PRODUIT AS Produit, JOURNAL.Catalogue AS Catalogue, JOURNAL.CodeProduit AS CodeProduit, JOURNAL.STATUS AS Status, JOURNAL.[REMARQUES CLIENT] AS RemarquesClient, JOURNAL.REMARQUES AS Commentaires, JOURNAL.[N° SERIE] AS NumeroSerie, JOURNAL.[N° SERIE2] AS NumeroSerie2, JOURNAL.[DEMANDE CLIENT] AS DemandeClient, JOURNAL.[ACTION EFFECTUEE] AS ActionEffectuee, JOURNAL.[DECISION TECHNIQUE] AS DecisionTechnique, JOURNAL.[DECISION FINALE] AS DecisionFinale, JOURNAL.URGENT AS Urgent, JOURNAL.[DATE MODIFICATION] AS DateModification, JOURNAL.DECISION AS Decision, 
        STATUS.STATUS AS IntituleStatus, 
        [ACTIONS DEMANDEES].ACTION AS IntituleDemandeClient, 
        [ACTIONS EFFECTUEES].ACTION AS IntituleActionEffectuee, 
        CASE [DECISION TECHNIQUE] WHEN 1 THEN 'Garantie' WHEN 2 THEN 'Hors Garantie' ELSE '' END AS IntituleDecisionTechnique, 
        CASE [DECISION FINALE] WHEN 1 THEN 'Garantie' WHEN 2 THEN 'Hors Garantie' ELSE '' END AS IntituleDecisionFinale 
    FROM Incidents as test INNER JOIN CENPISA.dbo.F_COMPTET AS F_COMPTET RIGHT OUTER JOIN STATUS RIGHT OUTER JOIN [ACTIONS EFFECTUEES] RIGHT OUTER JOIN [ACTIONS DEMANDEES] RIGHT OUTER JOIN JOURNAL
    ON [ACTIONS DEMANDEES].[ID ACTION] = JOURNAL.[DEMANDE CLIENT] ON [ACTIONS EFFECTUEES].[ID ACTION] = JOURNAL.[ACTION EFFECTUEE] ON test.IdAffaire = IDJournal ON STATUS.[ID STATUS] = JOURNAL.STATUS ON F_COMPTET.CT_Num COLLATE SQL_Latin1_General_CP1_CI_AS = JOURNAL.CODE
    WHERE (JOURNAL.[ID JOURNAL] = 14567)
    J'ai essayé de donner un alias à ma table Incidents mais c'est toujours le même problème.

    Sauriez vous d'où cela peut venir??

    Merci d'avance pour vos réponses

  2. #2
    Membre actif Avatar de maxeur
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    416
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 416
    Points : 267
    Points
    267
    Par défaut
    Je ne sais plus quoi tenter, j'ai essayé de déplacer le nom de la table dans la requête, l'erreur se met sur une autre colonne.

    J'ai essayé de mettre le nom de la base de données avant le nom des tables (en y ajoutant des alias sans succès non plus)

    Cette requête fonctionnait avant que je rajoute le champs associé à la table incident.

    Personne n'aurit une piste que je pourrais suivre ?

  3. #3
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 244
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 244
    Points : 12 876
    Points
    12 876
    Par défaut
    Bonjour,
    Je touve la syntaxe de ta requête pour le moins "bizarre":
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    select *
    from table1 inner join table2 inner join table3
    on <condition1> on <condition2>

    J'aurai plutôt vu ceci:
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    select *
    from table1
    inner join table2 on <condition1> 
    inner join table3 on <condition2>

    Donc dans ton cas (si je ne me trompe pas dans les jointures ):
    Code SQL : 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
     
    SELECT test.Commentaires AS IncidentComment,
        JOURNAL.[ID JOURNAL] AS IDJournal, JOURNAL.[DATE ENTREE] AS DateEntree, JOURNAL.[DATE SORTIE] AS DateSortie, JOURNAL.CODE AS CodeClient, 
        CASE WHEN F_COMPTET.CT_Sommeil = 1 THEN '(en sommeil)' END AS SommeilClient, F_COMPTET.CT_Intitule AS IntituleClient, F_COMPTET.CT_Telephone AS TelephoneClient, F_COMPTET.CT_Telecopie AS TelecopieClient, 
        JOURNAL.[REFERENCE CLIENT] AS ReferenceClient, JOURNAL.PRODUIT AS Produit, JOURNAL.Catalogue AS Catalogue, JOURNAL.CodeProduit AS CodeProduit, JOURNAL.STATUS AS STATUS, JOURNAL.[REMARQUES CLIENT] AS RemarquesClient, JOURNAL.REMARQUES AS Commentaires, JOURNAL.[N° SERIE] AS NumeroSerie, JOURNAL.[N° SERIE2] AS NumeroSerie2, JOURNAL.[DEMANDE CLIENT] AS DemandeClient, JOURNAL.[ACTION EFFECTUEE] AS ActionEffectuee, JOURNAL.[DECISION TECHNIQUE] AS DecisionTechnique, JOURNAL.[DECISION FINALE] AS DecisionFinale, JOURNAL.URGENT AS Urgent, JOURNAL.[DATE MODIFICATION] AS DateModification, JOURNAL.DECISION AS Decision, 
        STATUS.STATUS AS IntituleStatus, 
        [ACTIONS DEMANDEES].ACTION AS IntituleDemandeClient, 
        [ACTIONS EFFECTUEES].ACTION AS IntituleActionEffectuee, 
        CASE [DECISION TECHNIQUE] WHEN 1 THEN 'Garantie' WHEN 2 THEN 'Hors Garantie' ELSE '' END AS IntituleDecisionTechnique, 
        CASE [DECISION FINALE] WHEN 1 THEN 'Garantie' WHEN 2 THEN 'Hors Garantie' ELSE '' END AS IntituleDecisionFinale 
    FROM Incidents AS test 
    INNER JOIN CENPISA.dbo.F_COMPTET AS F_COMPTET ON F_COMPTET.CT_Num COLLATE SQL_Latin1_General_CP1_CI_AS = JOURNAL.CODE
    RIGHT OUTER JOIN STATUS ON STATUS.[ID STATUS] = JOURNAL.STATUS 
    RIGHT OUTER JOIN [ACTIONS EFFECTUEES] ON [ACTIONS EFFECTUEES].[ID ACTION] = JOURNAL.[ACTION EFFECTUEE]
    RIGHT OUTER JOIN [ACTIONS DEMANDEES] ON [ACTIONS DEMANDEES].[ID ACTION] = JOURNAL.[DEMANDE CLIENT]
    RIGHT OUTER JOIN JOURNAL   
    WHERE (JOURNAL.[ID JOURNAL] = 14567) and test.IdAffaire = IDJournal

    Pour la condition test.IdAffaire = IDJournal , j'ai un peu de mal à savoir à quelle jointure elle se rapporte, vu que IdJournal n'est pas préfixé.

    Tatayo.

  4. #4
    Membre actif Avatar de maxeur
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    416
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 416
    Points : 267
    Points
    267
    Par défaut
    Merci pour ta réponse mais avec cette requête j'ai toujours une erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Syntaxe incorrecte vers le mot clé 'WHERE'. 
    Je ne comprends pas pourquoi

  5. #5
    Membre confirmé Avatar de juvamine
    Profil pro
    Chef de projet MOA
    Inscrit en
    Mai 2004
    Messages
    414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Mai 2004
    Messages : 414
    Points : 502
    Points
    502
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    RIGHT OUTER JOIN JOURNAL   
    WHERE (JOURNAL.[ID JOURNAL] = 14567) AND test.IdAffaire = IDJournal
    Il te manque un ON avec une condition avec ton RIGHT JOIN

  6. #6
    Membre actif Avatar de maxeur
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    416
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 416
    Points : 267
    Points
    267
    Par défaut
    Cette condition manquante est

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     test.IdAffaire = IDJournal
    Le problème est que si je déplace cette condition dans la clause on j'ai la même erreur qu'avant qui apparait

  7. #7
    Membre émérite
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    1 874
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 874
    Points : 2 890
    Points
    2 890
    Par défaut
    Dans la requête il y a une série de JOIN qui se suivent puis une série de ON qui se suivent et il est difficile de voir quel ON se rapporte à quel JOIN.
    La cause de l'erreur est d'après moi que, quand le serveur veut évaluer le ON test.IdAffaire = IDJournal il est sur une jointure dans laquelle il n'y a pas de "test" ni à gauche ni à droite, ce qui signifierait que cette clause ON est plaçée au mauvais endroit.
    Personnellement je commençerais par mettre des parenthèses autour de tous les JOIN pour y voir plus clair.

  8. #8
    Membre actif Avatar de maxeur
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    416
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 416
    Points : 267
    Points
    267
    Par défaut
    Merci à tous pour votre précieuse aide je viens de trouver la solution

    Il s'agissait de la jointure avec la table journa qui n'était pas faite correctement

    Voici la solution

    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
    SELECT test.Commentaires AS IncidentComment,
        JOURNAL.[ID JOURNAL] AS IDJournal, JOURNAL.[DATE ENTREE] AS DateEntree, JOURNAL.[DATE SORTIE] AS DateSortie, JOURNAL.CODE AS CodeClient, 
        CASE WHEN F_COMPTET.CT_Sommeil = 1 THEN '(en sommeil)' END AS SommeilClient, F_COMPTET.CT_Intitule AS IntituleClient, F_COMPTET.CT_Telephone AS TelephoneClient, F_COMPTET.CT_Telecopie AS TelecopieClient, 
        JOURNAL.[REFERENCE CLIENT] AS ReferenceClient, JOURNAL.PRODUIT AS Produit, JOURNAL.Catalogue AS Catalogue, JOURNAL.CodeProduit AS CodeProduit, JOURNAL.STATUS AS STATUS, JOURNAL.[REMARQUES CLIENT] AS RemarquesClient, JOURNAL.REMARQUES AS Commentaires, JOURNAL.[N° SERIE] AS NumeroSerie, JOURNAL.[N° SERIE2] AS NumeroSerie2, JOURNAL.[DEMANDE CLIENT] AS DemandeClient, JOURNAL.[ACTION EFFECTUEE] AS ActionEffectuee, JOURNAL.[DECISION TECHNIQUE] AS DecisionTechnique, JOURNAL.[DECISION FINALE] AS DecisionFinale, JOURNAL.URGENT AS Urgent, JOURNAL.[DATE MODIFICATION] AS DateModification, JOURNAL.DECISION AS Decision, 
        STATUS.STATUS AS IntituleStatus, 
        [ACTIONS DEMANDEES].ACTION AS IntituleDemandeClient, 
        [ACTIONS EFFECTUEES].ACTION AS IntituleActionEffectuee, 
        CASE [DECISION TECHNIQUE] WHEN 1 THEN 'Garantie' WHEN 2 THEN 'Hors Garantie' ELSE '' END AS IntituleDecisionTechnique, 
        CASE [DECISION FINALE] WHEN 1 THEN 'Garantie' WHEN 2 THEN 'Hors Garantie' ELSE '' END AS IntituleDecisionFinale 
    FROM Incidents AS test 
    RIGHT OUTER JOIN JOURNAL ON test.IdAffaire = JOURNAL.[ID JOURNAL]
    INNER JOIN CENPISA.dbo.F_COMPTET AS F_COMPTET ON F_COMPTET.CT_Num COLLATE SQL_Latin1_General_CP1_CI_AS = JOURNAL.CODE
    RIGHT OUTER JOIN STATUS ON STATUS.[ID STATUS] = JOURNAL.STATUS 
    RIGHT OUTER JOIN [ACTIONS EFFECTUEES] ON [ACTIONS EFFECTUEES].[ID ACTION] = JOURNAL.[ACTION EFFECTUEE]
    RIGHT OUTER JOIN [ACTIONS DEMANDEES] ON [ACTIONS DEMANDEES].[ID ACTION] = JOURNAL.[DEMANDE CLIENT]
    WHERE (JOURNAL.[ID JOURNAL] = 14567)

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 19/06/2015, 09h41
  2. Réponses: 3
    Dernier message: 16/04/2008, 08h39
  3. Rch toutes les tables contenant un nom de colonne identique
    Par MorbidAngel dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 06/09/2005, 10h22
  4. exporter une table sans le nom de colonnes ?
    Par vuldos dans le forum Access
    Réponses: 13
    Dernier message: 11/10/2004, 19h56

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