REQUETE SQL

Messages postés
175
Date d'inscription
vendredi 22 décembre 2000
Statut
Membre
Dernière intervention
9 septembre 2010
- - Dernière réponse : cs_casy
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
- 9 sept. 2010 à 17:32
J'ai beau chercher, je ne comprends pas cette erreur:

Msg 4104, Niveau 16, État 1, Ligne 17
L'identificateur en plusieurs parties "T_ETA.CodeEtab" ne peut pas être lié.

Ma requête est la suivante:

SELECT
T_ETA.SIREN,
T_HST_DADSU.SiretLieuDeTravail,
T_ETA.CodeAPE, T_ETA.Intitule, T_ETA.Rue1, T_ETA.Rue2, T_ETA.CodePostal, T_ETA.Commune, T_ETA.Telephone1, T_ETA.Fax,
T_SAL.MatriculeSalarie, T_SAL.Nom, T_SAL.NomJeuneFille, T_SAL.Prenom, T_SAL.Civilite,
T_NATIONALITE.Intitule,
T_SAL.DateNaissance, T_SAL.DeptNaissance, T_SAL.CommuneNaissance, T_SAL.Rue1, T_SAL.Rue2, T_SAL.Commune, T_SAL.CodePostal,
T_HST_NATIONALITE.CodeNationalite,
T_HST_INFOSSOCIETE.DateEmbauche,
T_ETA.Activite,
T_HST_AFFECTATION.EmploiOccupe,
T_SAL.SA_CompteurNumero As SAL_CPTNUMERO,
T_HST_DADSU.CodeUniteDureeTravail,
T_HST_CONTRAT.CodeNatureDeContrat

FROM T_ETA, T_SAL
INNER JOIN T_HST_ETABLISSEMENT As HST_1 ON T_ETA.CodeEtab = HST_1.CodeEtab
INNER JOIN T_HST_ETABLISSEMENT As HST_2 ON T_SAL.SA_CompteurNumero = HST_2.NumSalarie
INNER JOIN T_HST_INFOSSOCIETE ON T_SAL.SA_CompteurNumero = T_HST_INFOSSOCIETE.NumSalarie
INNER JOIN T_HST_NATIONALITE ON T_SAL.SA_CompteurNumero = T_HST_NATIONALITE.NumSalarie
INNER JOIN T_HST_DADSU ON T_SAL.SA_CompteurNumero = T_HST_DADSU.NumSalarie
INNER JOIN T_HST_AFFECTATION ON T_SAL.SA_CompteurNumero = T_HST_AFFECTATION.NumSalarie
INNER JOIN T_NATIONALITE ON T_HST_NATIONALITE.CodeNationalite = T_NATIONALITE.Code
INNER JOIN T_HST_CONTRAT ON T_SAL.SA_CompteurNumero = T_HST_CONTRAT.NumSalarie

WHERE T_ETA.Intitule = 'Jeu d''Essai'
GROUP BY T_ETA.SIREN, T_HST_DADSU.SiretLieuDeTravail, T_ETA.CodeAPE, T_ETA.Intitule, T_ETA.Rue1, T_ETA.Rue2, T_ETA.CodePostal, T_ETA.Commune, T_ETA.Telephone1, T_ETA.Fax, T_SAL.MatriculeSalarie, T_SAL.Nom, T_SAL.NomJeuneFille, T_SAL.Prenom, T_SAL.Civilite, T_NATIONALITE.Intitule, T_SAL.DateNaissance, T_SAL.DeptNaissance, T_SAL.CommuneNaissance, T_SAL.Rue1, T_SAL.Rue2, T_SAL.Commune, T_SAL.CodePostal, T_HST_NATIONALITE.CodeNationalite, T_HST_INFOSSOCIETE.DateEmbauche, T_ETA.Activite, T_HST_AFFECTATION.EmploiOccupe, T_SAL.SA_CompteurNumero, T_HST_DADSU.CodeUniteDureeTravail, T_HST_CONTRAT.CodeNatureDeContrat

Si quelqu'un peut m'aider ça serait super cool. Merci.
Afficher la suite 

6 réponses

Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
28
0
Merci
CodeEtab ne fait pas partie de T_ETA, où est mal orthographié.

Peut-être un problème de majuscule ?


[i][b]---- Sevyc64 (alias Casy) ----
[hr]# LE PARTAGE EST NOTRE FORCE #/b/i
Commenter la réponse de cs_casy
Messages postés
175
Date d'inscription
vendredi 22 décembre 2000
Statut
Membre
Dernière intervention
9 septembre 2010
4
0
Merci
Cela aurait été trop beau...heu CodeEtab est une clé primaire de T_ETA si ça peut aider...
Commenter la réponse de LordOfTheShadow
Messages postés
175
Date d'inscription
vendredi 22 décembre 2000
Statut
Membre
Dernière intervention
9 septembre 2010
4
0
Merci
Une autre idé peut être?

La connaissance est la plus grande des richesses.
Commenter la réponse de LordOfTheShadow
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
28
0
Merci
Alors refait ta jointure.

Modifie :

FROM T_ETA, T_SAL
INNER JOIN ....

En

FROM T_ETA ETAB
INNER JOIN T_SAL SAL ON ETAB.????=SAL.????
INNER JOIN .....

Et remplace partout T_ETA en ETAB et T_SAL en SAL


[i][b]---- Sevyc64 (alias Casy) ----
[hr]# LE PARTAGE EST NOTRE FORCE #/b/i
Commenter la réponse de cs_casy
Messages postés
175
Date d'inscription
vendredi 22 décembre 2000
Statut
Membre
Dernière intervention
9 septembre 2010
4
0
Merci
Malheureusement je n'ai aucune relation directe entre ETAB et SAL. Je n peux donc pas faire:

INNER JOIN T_SAL SAL ON ETAB.????=SAL.????


La connaissance est la plus grande des richesses.
Commenter la réponse de LordOfTheShadow
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
28
0
Merci
C'est pourtant ce que laissait supposer cette ligne :
FROM T_ETA, T_SAL

Tu peux alors essayer avec
FROM T_ETA ETAB, T_SAL, SAL

Mais je ne sais pas si ça va passer.

MAIS ....
Si tu regarde tes jointures, le premier INNER JOIN est lié à T_ETA, les autres sont liés, plus ou moins directement à T_SAL, mais il te manque un lien direct ou indirect entre T_ETA et T_SAL

A l'heure actuelle avec "FROM T_ETA, T_SAL" c'est le moteur SQL qui fait un lien direct entre T_ETA et T_SAL sur des champs qu'il considère similaire. Ce lien n'est peut-être pas correct.
Il vaudrait mieux comprendre ces liens pour être sur des données retournées.
Le mieux étant encore de ne jamais faire de jointures automatiques mais plutôt de les écrites explicitement.


[i][b]---- Sevyc64 (alias Casy) ----
[hr]# LE PARTAGE EST NOTRE FORCE #/b/i
Commenter la réponse de cs_casy