我正在尝试开发一个新手问题(我认为)。我们有一个SQL服务器数据库,可以从单独的系统日志文件中导入数据。这些文件分解在SQL数据库中的许多表中。我为这有点啰嗦而道歉,但希望它能清楚地解释我遇到问题的地方。
由于我目前的公司限制,我仅限于使用MS Access 2007或Excel 2007前端来查询和分析从日志文件中提取的数据。
我一直在研究一个查询,该查询应该从一个表(包含检查消息)获取所有记录,并根据UnitID从第二个表(一般信息,如果存在)获取一些相应的数据。
所以 - 对于其中一个单位ID使用简单的select语句,我得到51,319条记录。这是应该返回的记录数(结果将进入某些图表以查找消息中的模式)。
SELECT
Messages.Timestamp,
Messages.UnitID,
Messages.Stuff
FROM
Messages
WHERE
Messages.UnitID = '4400'
ORDER BY
Messages.Timestamp
如果我将其更改为SELECT DISTINCT,我会得到38,024条记录。最终,我不想要这个,因为我需要所有这些,但这会在一段时间内发挥作用 - 所以请耐心等待。
当我尝试将这些结果与“常规信息”表连接时,查询失败 - ODBC - 调用失败
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查询的记录?
先谢谢 杰森