访问语法问题:多个内部连接导致记录数减少
Access Syntax Issues: multiple inner joins cause record number reduction
我的问题是我想查询多个表,但是随着我增加内连接的数量,结果记录数减少了。
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不会显示任何丢失至少一个数据的记录。
我的问题是如何解决该问题并显示所有数据
提前感谢您的帮助。
您需要使用LEFT JOIN
而不是INNER JOIN
,这会将return左侧的所有记录table(Daily_Output20151013)连同匹配您加入的子查询的记录。
注意:如果您在查询中有很多这样的 LEFT JOIN,性能可能会受到影响。可能需要将子查询(atabla、btabla)保存为命名查询并改为使用它们。
我的问题是我想查询多个表,但是随着我增加内连接的数量,结果记录数减少了。
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不会显示任何丢失至少一个数据的记录。
我的问题是如何解决该问题并显示所有数据
提前感谢您的帮助。
您需要使用LEFT JOIN
而不是INNER JOIN
,这会将return左侧的所有记录table(Daily_Output20151013)连同匹配您加入的子查询的记录。
注意:如果您在查询中有很多这样的 LEFT JOIN,性能可能会受到影响。可能需要将子查询(atabla、btabla)保存为命名查询并改为使用它们。