2016-01-08 2 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

У вас есть опечатка в РЕГИСТРИРУЙТЕСЬ здесь:

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

не опечатка, нужна laestab от sch1 –

+0

Затем переместите это проверьте в разделе 'on', как я уже сказал. – Evgeny

+0

Он прав «sch1» не существует в контексте, где вы вызываете 'WHERE cluster_id = sch1.laestab' – DiscipleMichael

Смежные вопросы