'表达式中的类型不匹配'(MS Access SQL)

时间:2013-04-16 13:13:55

标签: sql ms-access

我与此有关,经过一个多小时的努力摆弄这个,我恐怕已经放弃......

A - 可能 - 简单的问题,虽然我没有使用SQL的经验。当我在Access中尝试这个(以及其他变体)时,我得到“表达式中的类型不匹配”:

SELECT Route_Leg_Passagier.[RouteID], Route_Leg_Passagier.[LegID], Leg.[Startpunt], Leg.[Eindpunt]
FROM Route_Leg_Passagier, Leg
WHERE Route_Leg_Passagier.[LegID] = Leg.[LegID]
AND Route_Leg_Passagier.[RouteID] = '1';

这是Access文件:

https://dl.dropboxusercontent.com/u/104521722/Vliegtuigmaatschappij%20-%20Database11.accdb

我希望看到StartpuntEindpunt的{​​{1}}和Leg RouteIDRouteID实体LegID,但Route_Leg_PassagierStartpunt位于实体Eindpunt中。

对不起,如果不行,我对此网站没有任何经验。但请随意批评我,并提前感谢你! :)

2 个答案:

答案 0 :(得分:3)

不是Route_Leg_Passagier。[RouteID]是一个整数值?在这种情况下,您的WHERE条件应如下所示:

AND Route_Leg_Passagier.[RouteID] = 1;

引号用于字符串或字符值

答案 1 :(得分:1)

Route_Leg_PassagierID.LegID是自动编号数据类型;这实际上是一种数字数据类型,一种特殊形式的长整数。 Leg.LegID是文本数据类型。并且您的数据库包含使用该字段的这两个表之间的关系。

尝试以下步骤:

  1. 制作db文件的备份副本。
  2. 删除Route_Leg_PassagierIDLeg之间的关系。
  3. Leg.LegID的数据类型更改为数字,长整数。
  4. 测试以下查询。
  5. SELECT
        rlp.Route_Leg_PassagierID,
        rlp.LegID,
        l.Startpunt,
        l.Eindpunt
    FROM
        Route_Leg_Passagier AS rlp
        INNER JOIN Leg AS l
        ON rlp.LegID = l.LegID
    WHERE rlp.RouteID='1';
    

    如果需要,您还可以在更正Leg.LegID的数据类型后重新创建关系。