SQL 语法错误 JOIN 三张表

SQL syntax error JOIN three tables

我正在尝试连接三个表。但是我得到这个错误

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;

怎么了?为什么会出现此错误?

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

你真的想加入 kilme 和 kadas 吗?

这个查询:

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;

请注意,这假设所有表和列都存在,并且列名等中允许使用重音字符。

这个栏目名称看起来很特别:

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;