2013-03-19 42 views
0

下面的查詢總是返回#1054未知列 - 在未知列'T_RELATIF_SESS.REL_COM_ID「的條款」MySQL的 - 關聯表 - 在第

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」。 我試圖重寫查詢很多次,但我仍然得到這個錯誤,我真的不明白爲什麼。每個字段存在於我的數據庫中。

我知道這可能很簡單,但它確實讓我很頭疼。有人能幫我一個忙,還是隻向我解釋我做錯了什麼?這將是非常明智的! 非常感謝!

回答

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` 
+0

非常感謝您T_RELATIF_SESST_RELATIF_SESS後加入T_COMMANDES!它很棒! :) – LancelotKiin 2013-03-19 08:10:45

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_COMMANDES加入T_COURS時,因爲列T_RELATIF_SESSREL_COM_ID尚未顯示,因爲您已在連接的下半部分聲明表T_RELATIF_SESS

+0

您的解決方案正常工作!非常感謝您的解釋! – LancelotKiin 2013-03-19 08:11:37

0

在您加入表格之前,您嘗試訪問T_RELATIF_SESS。你必須經過T_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