2016-01-08 36 views
0

我得到错误Unknown column 'sch1.laestab' in 'field list'此查询表的别名加入

SELECT 
    sch1.laestab AS eef_sch_id, 
    sch1.sch_name AS sch_name, 
    sch1.urn AS sch_dfe, 
    foo1.* 
FROM tbl_Schools as sch1 
JOIN (
    SELECT 
    sch2.laestab AS eef_sch2_id, 
    sch2.sch_name AS sch2_name, 
    sch2.urn AS sch2_dfe 
    FROM tbl_SimilarSchools ss2 
    JOIN tbl_Schools sch2 ON sch2.laestab = ss2.cluster_id 
    WHERE cluster_id = sch1.laestab 
    AND cluster_id != school_id 
    AND sch2.use_KS4 = '1' 
    ORDER BY distance2 ASC 
    LIMIT 1 
) as foo1 

但如果我删除JOIN部分工作正常。我的语法有什么问题?

+0

在你的查询处添加'on 1 = 1'。 'JOIN'语句需要'ON'语句。 – Evgeny

+0

@Evgeny更好地使用'CROSS JOIN'关键字来代替? –

+0

我觉得没有什么区别 – Evgeny

回答

0

你里面错字JOIN这里:

WHERE cluster_id = sch1.laestab 

应该

WHERE cluster_id = sch2.laestab 

或者,如果这不是笔误,那么你就应该搬出这个检查外加入到“ON”部分。像这样的东西

JOIN (
    SELECT 
    cluster_id, 
    sch2.laestab AS eef_sch2_id, 
    sch2.sch_name AS sch2_name, 
    sch2.urn AS sch2_dfe 
    FROM tbl_SimilarSchools ss2 
    JOIN tbl_Schools sch2 ON sch2.laestab = ss2.cluster_id 
    WHERE cluster_id != school_id 
    AND sch2.use_KS4 = '1' 
    ORDER BY distance2 ASC 
    LIMIT 1 
) as foo1 
on foo1.cluster_id = sch1.laestab 
+0

不是拼写错误,需要sch1中的laestab –

+0

然后移动这个像我说的那样检查“开”部分。 – Evgeny

+0

他是正确的“sch1”不存在于您调用WHERE cluster_id = sch1.laestab'的环境中 – DiscipleMichael