【问题标题】:Error in saving the query(Join expression not supported. (Error 3296))保存查询时出错(不支持联接表达式。(错误 3296))
【发布时间】:2014-02-27 11:57:50
【问题描述】:

这是我的基本代码,注意点是我已经从另外两个 tbl_variable cost 和 tbl_currencies 表中检索到 dbo_currencyconversion 表。 现在我正在尝试从表 dbo_currencyconversion 中添加行值,并且查询在添加行时工作正常,但是当我尝试将查询保存在 MS ACCESS 中时出现错误,请让我知道是否有任何方法可以解决此问题 这是我在 ms 访问中的查询

select 
currencyconversion_1ST_P_OLD.MEA_ID,
currencyconversion_1ST_P_OLD.conversion-currencyconversion_OFR_P_NEW.conversion as delta
from 
dbo_currencyconversion as currencyconversion_1ST_P_OLD INNER JOIN
dbo_currencyconversion as currencyconversion_OFR_P_NEW ON 

(currencyconversion_1ST_P_OLD.VCOS_NAME='1ST_P_OLD' AND 

currencyconversion_OFR_P_NEW.VCOS_NAME='OFR_P_NEW' AND 

currencyconversion_1ST_P_OLD.MEA_ID=currencyconversion_OFR_P_NEW.MEA_ID);

错误是: 不支持连接表达式。 (错误 3296)

可能的原因:

您的 SQL 语句包含多个连接,其中查询的结果可能会有所不同,具体取决于执行连接的顺序。您可能希望创建一个单独的查询来执行第一个连接,然后将该查询包含在您的 SQL 语句中。 JOIN 操作中的 ON 语句不完整或包含太多表。您可能希望将 ON 表达式放在 WHERE 子句中。

感谢您提前回复

【问题讨论】:

    标签: sql ms-access


    【解决方案1】:

    试试这个:

    SELECT
    currencyconversion_1ST_P_OLD.MEA_ID,
    currencyconversion_1ST_P_OLD.conversion-currencyconversion_OFR_P_NEW.conversion as delta
    FROM
    dbo_currencyconversion as currencyconversion_1ST_P_OLD 
    INNER JOIN dbo_currencyconversion as currencyconversion_OFR_P_NEW 
    ON currencyconversion_1ST_P_OLD.MEA_ID=currencyconversion_OFR_P_NEW.MEA_ID
    WHERE
    (((currencyconversion_1ST_P_OLD.VCOS_NAME)="1ST_P_OLD") AND 
    ((currencyconversion_OFR_P_NEW.VCOS_NAME)="OFR_P_NEW"));
    

    【讨论】:

    • 在这种 where 条件下真的需要所有这些“(”和“)”吗?
    • @rakeshjain 谁知道,Access 倾向于创建带有很多括号的查询。这就是使用查询工具在 Access 中进行的查询的样子。不过我怀疑它们可能不需要。
    • @user3341851 乐于助人:)
    • 我有一个关于 MS ACCESS 的一般性问题,例如如果我想将此查询添加到我的表单中,是否有任何程序可以执行此操作。因为我需要将此查询输入到我的比率数据库中,所以如果有是否有任何将此查询输入到 MS 访问表单的过程,请告诉我
    • 我通常有 20 个基于查询的表单,每个查询都有自己的逻辑在表单中实现,所以有时我需要在单个表单中实现多个查询,所以请指导我如何添加我的以“MS ACCESS”形式查询
    【解决方案2】:

    我觉得你需要搬家

    currencyconversion_1ST_P_OLD.VCOS_NAME='1ST_P_OLD' AND 
    currencyconversion_OFR_P_NEW.VCOS_NAME='OFR_P_NEW'
    

    从你的 ON 条件到 where 子句内部。

    最终查询

    select 
    currencyconversion_1ST_P_OLD.MEA_ID,
    currencyconversion_1ST_P_OLD.conversion-currencyconversion_OFR_P_NEW.conversion as delta
    from 
    dbo_currencyconversion as currencyconversion_1ST_P_OLD INNER JOIN
    dbo_currencyconversion as currencyconversion_OFR_P_NEW 
    ON (currencyconversion_1ST_P_OLD.MEA_ID=currencyconversion_OFR_P_NEW.MEA_ID)
    WHERE currencyconversion_1ST_P_OLD.VCOS_NAME='1ST_P_OLD' AND 
    currencyconversion_OFR_P_NEW.VCOS_NAME='OFR_P_NEW';
    

    【讨论】:

    • 你能在我上面的代码上做吗?我不知道如何将它移动到我试过的 where 子句,但它总是给出一些语法错误。
    • 我有一个关于 MS ACCESS 的一般性问题,例如如果我想将此查询添加到我的表单中,是否有任何程序可以执行此操作。因为我需要将此查询输入到我的比率数据库中,所以如果有是否有任何将此查询输入到 MS 访问表单的过程,请告诉我
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多