vb.net INNER 连接 3 个表:附加信息:关键字附近的语法不正确 'on'

vb.net INNER Join 3 tables: Additional information: Incorrect syntax near the keyword 'on'

语法有什么问题。我尝试做 INNER JOIN 3 个表,但我收到以下错误消息

Additional information: Incorrect syntax near the keyword 'on'.

SELECT train.id,
       train.class_id,
       train.type_id,
       train.m_year,
       train_type.type,
       train_type.avarage_speed,
       train_class.class,
       train_class.capacity
FROM   train
       INNER JOIN 
            ON  train.class_id = train_class.id
            AND train.type_id = train_type.id

您在使用 INNER JOIN 时错过了第 2 个和第 3 个表。

INNER JOIN <Table 2> on train.class_id = train_class.id
INNER JOIN <Table 3> on train.type_id = train_type.id

您的 join. 中存在语法错误 join 的语法如下:

SELECT column_name(s)
FROM table1
JOIN table2
ON table1.column_name=table2.column_name;

因此您的查询将如下所示:

 " SELECT train.id, train.class_id, train.type_id, train.m_year, train_type.type," & _
 " train_type.avarage_speed, train_class.class, train_class.capacity FROM train" & _
 " INNER JOIN train_class on train.class_id = train_class.id " & _
 " INNER JOIN train_type on train.type_id = train_type.id"

您将三个表用于 JOIN 但未正确提及 JOIN

JOIN 语法

(table1 INNER JOIN table2 ON table1.ID = table2.ID) INNER JOIN table3 ON table1.ID = table3.ID

你的查询应该是这样的

SELECT train.id,
   train.class_id,
   train.type_id,
   train.m_year,
   train_type.type,
   train_type.avarage_speed,
   train_class.class,
   train_class.capacity
FROM (train
   INNER JOIN train_class
   ON train.class_id = train_class.id)
   INNER JOIN train_type ON train.type_id = train_type.id

你错过了语法,table 名称,你的代码必须像:

SELECT train.id,
    train.class_id,
    train.type_id,
    train.m_year,
    train_type.type,
    train_type.avarage_speed,
    train_class.class,
    train_class.capacity
FROM train
    INNER JOIN train_class
ON  train.class_id = train_class.id
    AND train.type_id = train_type.id