SQL语法错误JOIN三个表

时间:2015-04-18 11:56:11

标签: sql ms-access left-join

我试图加入三张桌子。但是我得到了这个错误

Syntax error(missing operator) in query expression STUDENTAI.mėgstamiausia_laida = TV_LAIDOS.id
        LEFT JOIN MIESTAI
                ON STUDENTAI.kilme = MIESTAI.koda'.

这是我的代码

 SELECT MIESTAI.pavadinimas, TV_LAIDOS.pavadinimas
       FROM STUDENTAI
                LEFT JOIN TV_LAIDOS
                        ON STUDENTAI.mėgstamiausia_laida = TV_LAIDOS.id
                LEFT JOIN MIESTAI
                        ON STUDENTAI.kilme = MIESTAI.kodas
        WHERE STUDENTAI.ugis > 190;

那有什么不对?为什么我会收到此错误?

3 个答案:

答案 0 :(得分:3)

此查询:

SELECT MIESTAI.pavadinimas, TV_LAIDOS.pavadinimas
FROM STUDENTAI LEFT JOIN
     TV_LAIDOS
     ON STUDENTAI.mėgstamiausia_laida = TV_LAIDOS.id LEFT JOIN
     MIESTAI
     ON STUDENTAI.kilme = MIESTAI.kodas
WHERE STUDENTAI.ugis > 190;

在任何数据库中看起来结构正确。 。 。 MS Access除外。在该系统中,连接周围需要括号:

SELECT MIESTAI.pavadinimas, TV_LAIDOS.pavadinimas
FROM (STUDENTAI LEFT JOIN
      TV_LAIDOS
      ON STUDENTAI.mėgstamiausia_laida = TV_LAIDOS.id
     ) LEFT JOIN
     MIESTAI
     ON STUDENTAI.kilme = MIESTAI.kodas
WHERE STUDENTAI.ugis > 190;

请注意,这假设表和列都存在,并且列名中允许使用重音字符,依此类推。

答案 1 :(得分:1)

您的语法是正确的。表MIESTAI不存在,或字段名称STIDENTAI.kilme或MIESTAI.kadas不存在。

你真的想加入kilme和kadas吗?

答案 2 :(得分:1)

此列名称看起来很特别:

STUDENTAI.mėgstamiausia_laida

如果我把它包含在``中,那就在我的MySQL上运行,即

SELECT MIESTAI.pavadinimas, TV_LAIDOS.pavadinimas
  FROM STUDENTAI
  LEFT JOIN TV_LAIDOS
    ON STUDENTAI.`mėgstamiausia_laida` = TV_LAIDOS.id
  LEFT JOIN MIESTAI
    ON STUDENTAI.kilme = MIESTAI.kodas
 WHERE STUDENTAI.ugis > 190;