2012-11-15 95 views
0

我遇到了一个简单查询的问题。那就是:Mysql - ON子句中的未知列

SELECT `T_COURS`.`COU_DATE`, 
`T_SESSIONS`.*, 
`T_FORMATIONS`.`FOR_TITRE`, `T_FORMATIONS`.`FOR_ID`, `T_FORMATIONS`.`FOR_TITRE`,  `T_FORMATIONS`.`FOR_CATEGORIE`, 
`T_FORMATIONS`.`FOR_DESCRIPTION`, `T_FORMATIONS`.`FOR_MIN_PART`, `T_FORMATIONS`.`FOR_MAX_PART`, `T_FORMATIONS`.`FOR_PRIX`, `T_FORMATIONS`.`FOR_LANGUE` 
FROM `T_FORMATIONS` 
INNER JOIN `T_COURS` ON `T_SESSIONS`.`SES_ID` = `T_COURS`.`COU_SES_ID` 
INNER JOIN `T_SESSIONS` ON `T_FORMATIONS`.`FOR_ID` = `T_SESSIONS`.`SES_FOR_ID` 
WHERE `T_SESSIONS`.`SES_ETAT` = 1 
ORDER BY `T_COURS`.`COU_DATE` ASC, `T_SESSIONS`.`SES_TITRE` ASC, `T_FORMATIONS`.`FOR_TITRE` ASC LIMIT 5 

当我尝试运行它,我得到这个消息:

#1054 - Unknown column 'T_SESSIONS.SES_ID' in 'on clause' 

我真的不明白为什么,因为一切都在我的数据库中是否存在?

我在网上寻找答案,但它没有帮助我(或者我不明白我读的答案)。

+2

邮政数据库方案,则请。 – Sirko

+0

我想你有两个连接交换。在解析“T_COURS”行时,“T_SESSIONS”不存在。 –

+1

将“INNER JOIN'T_SESSIONS”放在'T_FORMATIONS'.'FOR_ID' ='T_SESSIONS'.'SES_FOR_ID'“前面”INNER JOIN'T_COURS' ON'T_SESSIONS'.'SES_ID' ='T_COURS'.'​​'COU_SES_ID'“ –

回答

0

没有看到您的全表结构,我会开始交换您的订单JOIN,您在尝试在当前版本中使用它时加入T_SESSIONS。您目前有:

FROM `T_FORMATIONS` 
INNER JOIN `T_COURS` 
    ON `T_SESSIONS`.`SES_ID` = `T_COURS`.`COU_SES_ID` 
INNER JOIN `T_SESSIONS` 
    ON `T_FORMATIONS`.`FOR_ID` = `T_SESSIONS`.`SES_FOR_ID` 

将其更改为:

FROM `T_FORMATIONS` 
INNER JOIN `T_SESSIONS` 
    ON `T_FORMATIONS`.`FOR_ID` = `T_SESSIONS`.`SES_FOR_ID` 
INNER JOIN `T_COURS` 
    ON `T_SESSIONS`.`SES_ID` = `T_COURS`.`COU_SES_ID` 

制作完整的查询:

SELECT `T_COURS`.`COU_DATE`, 
    `T_SESSIONS`.*, 
    `T_FORMATIONS`.`FOR_TITRE`, 
    `T_FORMATIONS`.`FOR_ID`, 
    `T_FORMATIONS`.`FOR_TITRE`,  
    `T_FORMATIONS`.`FOR_CATEGORIE`, 
    `T_FORMATIONS`.`FOR_DESCRIPTION`, 
    `T_FORMATIONS`.`FOR_MIN_PART`, 
    `T_FORMATIONS`.`FOR_MAX_PART`, 
    `T_FORMATIONS`.`FOR_PRIX`, 
    `T_FORMATIONS`.`FOR_LANGUE` 
FROM `T_FORMATIONS` 
INNER JOIN `T_SESSIONS` 
    ON `T_FORMATIONS`.`FOR_ID` = `T_SESSIONS`.`SES_FOR_ID` 
INNER JOIN `T_COURS` 
    ON `T_SESSIONS`.`SES_ID` = `T_COURS`.`COU_SES_ID` 
WHERE `T_SESSIONS`.`SES_ETAT` = 1 
ORDER BY `T_COURS`.`COU_DATE` ASC, `T_SESSIONS`.`SES_TITRE` ASC, `T_FORMATIONS`.`FOR_TITRE` ASC 
LIMIT 5 
+0

太棒了!非常感谢你!你救了我的命! :D – LancelotKiin

+0

@LancelotKiin乐意帮忙。真高兴你做到了。 – Taryn