0

以下查询始终返回 #1054 - 'on 子句'中的未知列 'T_RELATIF_SESS.REL_COM_ID'

SELECT
`T_FORMATIONS`.`FOR_ID`, 
`T_FORMATIONS`.`FOR_TITRE`, 
`T_FORMATIONS`.`FOR_NIVEAU`, 
`T_FORMATIONS`.`FOR_MAX_PART`, 
`T_RELATIF_SESS`.`REL_COM_ID`, 
`T_RELATIF_SESS`.`REL_SES_ID`,
`T_SESSIONS`.`SES_ID`, 
`T_SESSIONS`.`SES_TITRE`, 
`T_SESSIONS`.`SES_TYPE`, 
`T_SESSIONS`.`SES_ADRESSE`, 
`T_SESSIONS`.`SES_NPA`, 
`T_SESSIONS`.`SES_LIEU`, 
`T_SESSIONS`.`SES_PRIX_SPECIAL`, 
`T_SESSIONS`.`SES_VAL_PRIX_SPECIAL`, 
`T_SESSIONS`.`SES_PRIX_SPEC_EXP`, 
`T_SESSIONS`.`SES_SUPP_COURS_INCL`, 
`T_SESSIONS`.`SES_SUPP_COURS_ADD`, 
`T_SESSIONS`.`SES_PRIX_SUPP_COURS_ADD`, 
`T_SESSIONS`.`SES_HORAIRE_SPECIAL`, 
`T_SESSIONS`.`SES_REMARQUES`, 
`T_SESSIONS`.`SES_REC_ID`, 
`T_COURS`.`COU_ID`, 
`T_COURS`.`COU_DATE`, 
    (SELECT `COU_DATE` FROM `T_COURS` WHERE `T_COURS`.`COU_SES_ID` = `T_SESSIONS`.`SES_ID` ORDER BY `COU_DATE` ASC LIMIT 1) AS `PREMIERCOURS`, 
    (SELECT `COU_DATE` FROM `T_COURS` WHERE `T_COURS`.`COU_SES_ID` = `T_SESSIONS`.`SES_ID` ORDER BY `COU_DATE` DESC LIMIT 1) AS `DERNIERCOURS` 
FROM `T_COURS` 
INNER JOIN `T_COMMANDES` ON `T_RELATIF_SESS`.`REL_COM_ID` = `T_COMMANDES`.`COM_ID` 
INNER JOIN `T_RELATIF_SESS` ON `T_SESSIONS`.`SES_ID` = `T_RELATIF_SESS`.`REL_SES_ID` 
INNER JOIN `T_SESSIONS` ON `T_COURS`.`COU_SES_ID` = `T_SESSIONS`.`SES_ID` 
INNER JOIN `T_FORMATIONS` ON `T_SESSIONS`.`SES_FOR_ID` = `T_FORMATIONS`.`FOR_ID` 
WHERE `T_COMMANDES`.`COM_ID`=19

在我添加之前,此查询运行良好

INNER JOIN `T_COMMANDES` ON `T_RELATIF_SESS`.`REL_COM_ID` = `T_COMMANDES`.`COM_ID` 
INNER JOIN `T_RELATIF_SESS` ON `T_SESSIONS`.`SES_ID` = `T_RELATIF_SESS`.`REL_SES_ID` 

WHERE `T_COMMANDES`.`COM_ID`=19

T_RELATIF_SESS只是称为“T_SESSIONS”和“T_COMMANDES”的表之间的关联表。我尝试多次重写查询,但仍然收到此错误,我真的不明白为什么。每个字段都存在于我的数据库中。

我知道这可能很简单,但它真的让我头疼。有人可以帮我一把,或者只是向我解释我做错了什么吗?会很感激的!非常感谢你!

4

3 回答 3

1

因此,根据您的描述,您尝试在没有的情况下运行脚本

INNER JOIN `T_COMMANDES` ON `T_RELATIF_SESS`.`REL_COM_ID` = `T_COMMANDES`.`COM_ID` 
INNER JOIN `T_RELATIF_SESS` ON `T_SESSIONS`.`SES_ID` = `T_RELATIF_SESS`.`REL_SES_ID` 

它正在工作,但不适用于该脚本?尝试按顺序进行,因为在您的第一个内部连接中,您正在尝试将表 (T_COMMANDES) 与您接下来将要加入的表 (T_RELATIF_SESS) 连接起来。

所以试试:

INNER JOIN `T_SESSIONS` ON `T_COURS`.`COU_SES_ID` = `T_SESSIONS`.`SES_ID` 
INNER JOIN `T_FORMATIONS` ON `T_SESSIONS`.`SES_FOR_ID` = `T_FORMATIONS`.`FOR_ID` 
INNER JOIN `T_RELATIF_SESS` ON `T_SESSIONS`.`SES_ID` = `T_RELATIF_SESS`.`REL_SES_ID` 
INNER JOIN `T_COMMANDES` ON `T_RELATIF_SESS`.`REL_COM_ID` = `T_COMMANDES`.`COM_ID`
于 2013-03-19T07:58:39.117 回答
1

添加联接后,您的表格顺序混乱了,因为您使用INNER JOIN的是 ,只要字段在联接上可见,您就可以在任何您喜欢的地方声明表格。它仍然会产生相同的结果。

要解决此问题,请将这些新联接放在联接的下部:

FROM    T_COURS 
        INNER JOIN T_SESSIONS 
            ON T_COURS.COU_SES_ID = T_SESSIONS.SES_ID 
        INNER JOIN T_FORMATIONS 
            ON T_SESSIONS.SES_FOR_ID = T_FORMATIONS.FOR_ID
        INNER JOIN T_RELATIF_SESS 
            ON T_SESSIONS.SES_ID = T_RELATIF_SESS.REL_SES_ID 
        INNER JOIN T_COMMANDES 
            ON T_RELATIF_SESS.REL_COM_ID = T_COMMANDES.COM_ID 

抛出错误消息:的原因Unknown column 'T_RELATIF_SESS.REL_COM_ID' in 'on clause'是因为在加入T_COURST_COMMANDES,列T_RELATIF_SESS。由于您已在联接的下部REL_COM_ID声明了表,因此尚不可见。T_RELATIF_SESS

于 2013-03-19T07:59:06.613 回答
0

T_RELATIF_SESS您在加入表之前尝试访问。您必须在T_COMMANDES之后T_RELATIF_SESS加入T_RELATIF_SESST_SESSIONS

SELECT
`T_FORMATIONS`.`FOR_ID`, 
...
FROM `T_COURS` 
INNER JOIN `T_SESSIONS` ON `T_COURS`.`COU_SES_ID` = `T_SESSIONS`.`SES_ID` 
INNER JOIN `T_FORMATIONS` ON `T_SESSIONS`.`SES_FOR_ID` = `T_FORMATIONS`.`FOR_ID` 
INNER JOIN `T_RELATIF_SESS` ON `T_SESSIONS`.`SES_ID` = `T_RELATIF_SESS`.`REL_SES_ID` 
INNER JOIN `T_COMMANDES` ON `T_RELATIF_SESS`.`REL_COM_ID` = `T_COMMANDES`.`COM_ID` 
WHERE `T_COMMANDES`.`COM_ID`=19
于 2013-03-19T08:01:13.330 回答