无法绑定多部分标识符

时间:2016-08-19 09:34:11

标签: sql sql-server

我有这个要求

    SELECT ACC.ID_LIENPARENTE,
        ACC.ID_VOYAGE,
        ACC.LI_ACC_NOM,
        ACC.LI_ACC_PRENOM,
        ACC.PA_ID_INDICATIF_TEL,
        ACC.CO_ACC_MEL,
        ACC.TE_ACC_TELEPHONE,
        E_PAYS.PA_ID AS PA_ID_INDICATIF_TEL_ACC, 
        E_PAYS.PA_I_INDICATIF AS PA_INDICATIF_TEL_ACC, 
        E_PAYS.PA_L_NOM_LISTE as PA_L_NOM_LISTE_INDICATIF_TEL_ACC
    FROM
    dbo.E_ACCOMPAGNANT ACC
    JOIN E_PAYS ON E_ACCOMPAGNANT.PA_ID_INDICATIF_TEL = E_PAYS.PA_ID
    INNER JOIN dbo.R_LIEN_PARENTE LIEN_PAR
    ON
    ACC.ID_LIENPARENTE = LIEN_PAR.ID_LIENPARENTE
    WHERE ID_VOYAGE = 10

当我执行此操作时,我收到此错误消息:

  

多部分标识符“E_ACCOMPAGNANT.PA_ID_INDICATIF_TEL”可以   不受束缚。

出了什么问题

3 个答案:

答案 0 :(得分:4)

如果为表定义别名,则必须使用始终
取代

JOIN E_PAYS ON E_ACCOMPAGNANT.PA_ID_INDICATIF_TEL = E_PAYS.PA_ID

JOIN E_PAYS ON ACC.PA_ID_INDICATIF_TEL = E_PAYS.PA_ID

答案 1 :(得分:2)

您必须通过别名PA_ID_INDICATIF_TEL

引用ACC
 SELECT ACC.ID_LIENPARENTE,
        ACC.ID_VOYAGE,
        ACC.LI_ACC_NOM,
        ACC.LI_ACC_PRENOM,
        ACC.PA_ID_INDICATIF_TEL,
        ACC.CO_ACC_MEL,
        ACC.TE_ACC_TELEPHONE,
        E_PAYS.PA_ID AS PA_ID_INDICATIF_TEL_ACC, 
        E_PAYS.PA_I_INDICATIF AS PA_INDICATIF_TEL_ACC, 
        E_PAYS.PA_L_NOM_LISTE as PA_L_NOM_LISTE_INDICATIF_TEL_ACC
    FROM
    dbo.E_ACCOMPAGNANT ACC
    JOIN E_PAYS ON ACC.PA_ID_INDICATIF_TEL = E_PAYS.PA_ID
    INNER JOIN dbo.R_LIEN_PARENTE LIEN_PAR
    ON
    ACC.ID_LIENPARENTE = LIEN_PAR.ID_LIENPARENTE
    WHERE ID_VOYAGE = 10

答案 2 :(得分:0)

juergen所述,如果您要加入表格,则需要使用alias名称。

你去吧

  SELECT ACC.ID_LIENPARENTE,
    ACC.ID_VOYAGE,
    ACC.LI_ACC_NOM,
    ACC.LI_ACC_PRENOM,
    ACC.PA_ID_INDICATIF_TEL,
    ACC.CO_ACC_MEL,
    ACC.TE_ACC_TELEPHONE,
    E_PAYS.PA_ID AS PA_ID_INDICATIF_TEL_ACC, 
    E_PAYS.PA_I_INDICATIF AS PA_INDICATIF_TEL_ACC, 
    E_PAYS.PA_L_NOM_LISTE as PA_L_NOM_LISTE_INDICATIF_TEL_ACC
FROM
dbo.E_ACCOMPAGNANT ACC
--JOIN E_PAYS ON E_ACCOMPAGNANT.PA_ID_INDICATIF_TEL = E_PAYS.PA_ID // alias not used
JOIN E_PAYS ON ACC.PA_ID_INDICATIF_TEL = E_PAYS.PA_ID  -- need to use alias for query
INNER JOIN dbo.R_LIEN_PARENTE LIEN_PAR
ON
ACC.ID_LIENPARENTE = LIEN_PAR.ID_LIENPARENTE
WHERE ID_VOYAGE = 10
相关问题