1

和这个有联系,折腾了一个多小时,怕是放弃了……

一个 - 可能 - 简单的问题,虽然我没有使用 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';

这是访问文件:

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

我想从那些s 中看到1. Startpuntand存储在 entity中,但是and在 entity 中。EindpuntLegRouteIDRouteIDLegIDRoute_Leg_PassagierStartpuntEindpuntLeg

如果这不好,我很抱歉,我对这个网站没有经验。但是请随时批评我,并提前感谢您!:)

4

2 回答 2

3

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

AND Route_Leg_Passagier.[RouteID] = 1;

引号用于字符串或字符值

于 2013-04-16T13:17:22.587 回答
1

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

尝试以下步骤:

  1. 制作 db 文件的备份副本。
  2. Route_Leg_PassagierID删除和之间的关系Leg
  3. 将数据类型Leg.LegID改为数字,长整数。
  4. 测试以下查询。
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

于 2013-04-16T14:38:12.457 回答