我的问题是我想查询多个表,但是我增加内连接数,结果记录数减少。
SELECT DISTINCT Daily_Output20151013.[Lot No], atabla.[Outgoing date]
AS [ext(1)time], btabla.[Outgoing date]
FROM ((((((Daily_Output20151013
INNER JOIN (SELECT [Lot no], [Outgoing date] FROM Daily_Output20151013
WHERE ((mid(Daily_Output20151013.[Process Pattern],4,1) = 'S'))
and (mid(Daily_Output20151013.[Process Pattern],5,1)='T')
and (mid(Daily_Output20151013.[Process Pattern],6,1)='R')
and (mid(Daily_Output20151013.[Process Pattern],8,1)='1')) AS atabla ON Daily_Output20151013.[Lot No] = atabla.[Lot No])
INNER JOIN (SELECT [Lot no], [Outgoing date] FROM Daily_Output20151013
WHERE ((mid(Daily_Output20151013.[Process Pattern],4,1) = 'P'))
and (mid(Daily_Output20151013.[Process Pattern],5,1)='L')
and (mid(Daily_Output20151013.[Process Pattern],6,1)='G')
and (mid(Daily_Output20151013.[Process Pattern],8,1)='1')) AS btabla ON Daily_Output20151013.[Lot No] = btabla.[Lot No])
这是代码中的一点摘录。出现缩减问题,因为有时这些字段不包含任何数据,我认为,Access不会显示任何错过至少一个数据的记录。
我的问题是如何解决该问题并显示所有数据
提前感谢您的帮助。
答案 0 :(得分:1)
您需要使用LEFT JOIN
而不是INNER JOIN
,这将返回左表(Daily_Output20151013)的所有记录以及已加入子查询的匹配记录。
注意:如果您在查询中有许多LEFT JOIN,性能可能会受到影响。可能需要将子查询(atabla,btabla)保存为命名查询并改为使用它们。