[英]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.