我有两个表,一个表(Organisations
)包含60行数据,另一个(Question Data
)包含数百行数据。它们都有一列OrgID
,该列是5个字符长的文本字段。
SQL语句为:
SELECT Organisations.Co, Organisations.Type, Organisations.F_O, Question_Data.*
FROM Organisations INNER JOIN Question_Data ON Organisations.OrgID = Question_Data.OrgID;
运行此查询时,即使我知道有多个数据匹配项(即返回数据的前三列为空),也没有Organisations
表中返回的数据。反向更改连接会产生相同的结果,或者在INNER JOIN
的情况下,根本不会返回任何数据。
我从在此计算机上设置的另一个Access数据库(即相同版本的Access,没有任何更改)导入了Organisations
表。
我可疑的一件事是,在一个表中,所有文本字段都是左对齐的,而在另一个表中,它们都是右对齐的。
任何帮助将不胜感激。预先非常感谢。
Seamus
答案 0 :(得分:0)
这是您的查询:
Obsolete
您的SELECT o.Co, o.Type, o.F_O, qd.*
FROM Organisations as o INNER JOIN
Question_Data as qd
ON o.OrgID = qd.OrgID;
无法正常工作-看起来相同的ID并不相同。当您使用字符串作为ID时会出现问题(整数不能发生这种情况)。
最常见的原因是ID开头或结尾的空格。您可以尝试:
JOIN
如果这是问题所在,则应该修复数据,以便您的SELECT o.Co, o.Type, o.F_O, qd.*
FROM Organisations as o INNER JOIN
Question_Data as qd
ON TRIM(o.OrgID) = TRIM(qd.OrgID);
版本(更好的版本)可以正常工作。
如果这不能解决问题,则可能需要更深入地研究。接下来,您可以尝试JOIN
来查看子字符串是否匹配:
LIKE
例如,空格字符可能不是简单的空格,而是其他东西-甚至是看不见的东西。