两张表,联接不从一张表返回数据

时间:2019-03-03 19:02:12

标签: sql ms-access

我有两个表,一个表(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

1 个答案:

答案 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

例如,空格字符可能不是简单的空格,而是其他东西-甚至是看不见的东西。