“On”条款中的未知列

时间:2012-08-20 16:47:10

标签: mysql

我正在处理以下SELECT声明:

SELECT *
FROM table1
LEFT JOIN table2 ON table2.contentid = table3.id AND table2.tmplid = table1.id
WHERE table2.value = "test"

我收到以下错误:

  

对数据库执行查询失败 - 未知列   'on clause'中的'table3.id'»

我做错了什么?

2 个答案:

答案 0 :(得分:1)

这是你的问题:

LEFT JOIN table2 ON table2.contentid = table3.id

您的ON子句中不能包含任何不属于连接的表(在本例中为table3)。

你的意思是:

SELECT *
FROM   table1
       LEFT JOIN table2
              ON table1.id = table2.tmplid
       LEFT JOIN table3
              ON table2.contentid = table3.id
WHERE  table2.value = "test"

答案 1 :(得分:0)

您引用的table3.id未在您的sql中定义。你的意思是放table1.id吗?

如果您想参考表3,您需要加入它:

SELECT *
FROM table1
LEFT JOIN table3
ON table1.id = table3.someid
LEFT JOIN table2 
ON table2.contentid = table3.id AND table2.tmplid = table1.id
WHERE table2.value = "test"