繁体   English   中英

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

[英]Two tables, join not returning data from one table

我有两个表,一个表( 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数据库中导入了Organisations表(即相同版本的Access,没有任何更改)。

我怀疑的一件事是,在一个表中,所有文本字段都是左对齐的,而在另一个表中,它们都是右对齐的。

任何帮助,将不胜感激。 提前谢谢了。

西姆斯

这是您的查询:

SELECT o.Co, o.Type, o.F_O, qd.*
FROM Organisations as o INNER JOIN
     Question_Data as qd
     ON o.OrgID = qd.OrgID;

您的JOIN不起作用-因此看起来相同的ID不相同。 当您使用字符串作为id时,这是一个问题(整数不能发生)。

最常见的原因是ID开头或结尾的空格。 你可以试试:

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来查看子字符串是否匹配:

SELECT o.Co, o.Type, o.F_O, qd.*
FROM Organisations as o INNER JOIN
     Question_Data as qd
     ON TRIM(o.OrgID) LIKE '*' & TRIM(qd.OrgID) & '*' OR
        TRIM(qd.OrgID) LIKE '*' & TRIM(o.OrgID) & '*' ;

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM