1

对于我正在尝试开发的查询,我遇到了一些新手问题(我认为)。我们有一个 SQL 服务器数据库,可以从单独的系统日志文件中导入数据。这些文件在 SQL 数据库中的许多表中被分解。对于这有点冗长,我深表歉意,但希望它清楚地解释了我遇到问题的地方。

由于我目前的公司限制,我仅限于使用 MS Access 2007 或 Excel 2007 前端来查询和分析从日志文件中提取的数据。

我一直在研究一个查询,该查询应该基于 UnitID 从一个表中获取所有记录(包含检查消息)和第二个表中的一些相应数据(如果存在,则为一般信息)。

所以 - 对其中一个单元 ID 使用简单的选择语句,我得到了 51,319 条记录。这是应该返回的记录数(结果将进入一些图表以查找消息中的模式)。

    SELECT
      Messages.Timestamp,
      Messages.UnitID,
      Messages.Stuff
    FROM
      Messages
    WHERE
      Messages.UnitID = '4400'
    ORDER BY
      Messages.Timestamp

如果我将其更改为 SELECT DISTINCT,我将获得 38,024 条记录。最终,我不想要这个,因为我需要所有这些,但这会在一段时间内发挥作用 - 所以请耐心等待。

当我尝试将这些结果与常规信息表连接时,查询失败 - ODBC --Call Failed

    SELECT
      Messages.TimeStamp,
      Messages.UnitID,
      Messages.Stuff,
      GeneralInfo.MoreStuff
    FROM
      Messages LEFT OUTER JOIN GeneralInfo 
        ON Messages.TimeStamp = GeneralInfo.TimeStamp 
        AND Messages.UnitID = GeneralInfo.UnitID
    WHERE
      Messages.UnitID = '4400'
    ORDER BY
      Messages.TimeStamp

出于病态的好奇心,我将其更改为 SELECT DISTINCT 并且它有效 - 返回 40,810 条记录。

什么可能导致我的 ODBC 失败(我怀疑返回太多记录)?如果我的怀疑是正确的,为什么连接查询会返回比我开始的简单 SELECT 查询更多的记录?

提前感谢杰森

4

0 回答 0