SQL 加入错误

SQL Join Incorrectly

我正在尝试 select 来自下图所示数据库的值,以便我可以插入一个名为 Desired Table 的新 table。数据和调试在 Microsoft Access 数据库中,我继续收到错误:

syntax error in query expression.

这个查询有什么问题?连接似乎是正确的,FROM 子句也是如此。如果您需要更多信息,请告诉我。不用担心 INSERT 子句。

查询:

SELECT vicdescriptions.vid, 
       vicdescriptions.make, 
       vicdescriptions.vic_year, 
       vicdescriptions.optiontable, 
       vacdescriptions.accessory, 
       vacvalues.value, 
       vicvalues.valuetype, 
       vicvalues.value 
FROM   vicdescriptions 
       JOIN vicvalues 
         ON ( vicdescriptions.vic_make = vicvalues.vic_make 
              AND vicdescriptions.vic_year = vicvalues.vic_year ); 

数据库结构:

DATABASE SCHEMA

需要 table 插入:

我想你应该使用 括号 只有当你加入超过 两个 Ms-Access 中的 tables 加上它应该在第一个 table 名称之前开始。尝试删除它。

.....
FROM   vicdescriptions 
       JOIN vicvalues 
         ON vicdescriptions.vic_make = vicvalues.vic_make 
             AND vicdescriptions.vic_year = vicvalues.vic_year
SELECT vicdescriptions.vid, 
       vicdescriptions.make, 
       vicdescriptions.vic_year, 
       vicdescriptions.optiontable, 
       vacdescriptions.accessory, 
       vacvalues.value, 
       vicvalues.valuetype, 
       vicvalues.value 
FROM   vicdescriptions 
       JOIN vicvalues 
         ON ( vicdescriptions.vic_make = vicvalues.vic_make 
              AND vicdescriptions.vic_year = vicvalues.vic_year ); 

我猜是第 5、6 行 vacdescriptions,vacvalues >> vicdescriptions,vicvalues

是否是 vacdescriptions 和 vacvalues 的拼写错误?

SELECT vicdescriptions.vid, 
       vicdescriptions.make, 
       vicdescriptions.vic_year, 
       vicdescriptions.optiontable, 
       **vicdescriptions.accessory, 
       vicvalues.value,** 
       vicvalues.valuetype, 
       vicvalues.value 
FROM   vicdescriptions 
       JOIN vicvalues 
         ON ( vicdescriptions.vic_make = vicvalues.vic_make 
              AND vicdescriptions.vic_year = vicvalues.vic_year ); 

Access 不支持 JOIN 作为 INNER JOIN 的同义词。您必须始终指定 JOIN:

的类型
FROM   vicdescriptions 
       INNER JOIN vicvalues 
         ON ( vicdescriptions.vic_make = vicvalues.vic_make 
              AND vicdescriptions.vic_year = vicvalues.vic_year ) 

如果不存在名为 vicvalues 的 table,在您将 JOIN 更改为 INNER JOIN 后,Access 将给出不同的错误消息。

SELECT VicDescriptions.VID, 
       VicDescriptions.Make, 
       VicDescriptions.VIC_Year, 
       VicDescriptions.OptionTable, 
       VacDescriptions.accessory, 
       VacValues.value, 
       VacValues.valuetype, 
       VacValues.value --(No such table as VicValues available in the database, you only have VacValues)
FROM   VicDescriptions 
       JOIN VacValues --(No such table available in the database, you only have VacValues) 
         ON ( VicDescriptions.VIC_Make = VacValues.VIC_Make 
              AND VicDescriptions.VIC_Year = VacValues.VIC_Year )
       JOIN VacDescriptions
         ON ( VacDescriptions.Period = VacValues.Period
               AND VacDescriptions.VAC = VacValues.VAC);