实现嵌套子查询(来自第二个选择)

时间:2018-01-25 17:08:26

标签: sql vba ms-access

在Access后端我将一个select嵌套到另一个中。

为此,我首先根据两个表创建了内部选择'abfCombineContactWithSupporter'并将其存储为单独的select。然后我在另一个(外部)选择中调用了这个选择。这样我就把第一个选择'abfCombineContactWithSupporter'与第三个表结合起来。

外部选择的代码:

INSERT INTO tblSupporters
SELECT tblMailingContacts.*
FROM tblMailingContacts 
LEFT JOIN abfCombineContactWithSupporter 
ON tblMailingContacts.[ID-Contact] = abfCombineContactWithSupporter.[ID-Contact]
WHERE (((abfCombineContactWithSupporter.Supporter)='ocl'));

嵌套选择'abfCombineContactWithSupporter'的代码

SELECT tblCompany.Supporter, tblContacts.[ID-Contact]
FROM tblContacts 
LEFT JOIN tblCompany 
ON tblContacts.[ID-Company] = tblCompany.[ID-Company];

在Access后端,它可以正常工作。

但现在我需要在纯vba(没有图形后端)中实现这一点,并且必须将两个字符串放在一个查询字符串中。 (在这种特殊情况下,无法将内部选择作为对象存储在后端。)

对我而言,它似乎是一个子查询,但没有弄清楚如何结合这两个脚本...欢迎任何帮助。

抱歉我的英文。这不是我的母语。

2 个答案:

答案 0 :(得分:0)

您通常只需将查询名称与子查询交换:

INSERT INTO tblSupporters
SELECT tblMailingContacts.*
FROM tblMailingContacts
LEFT JOIN
  (SELECT tblCompany.Supporter,
          tblContacts.[ID-Contact]
   FROM tblContacts
   LEFT JOIN tblCompany ON tblContacts.[ID-Company] = tblCompany.[ID-Company]) AS subCombineContactWithSupporter
   ON tblMailingContacts.[ID-Contact] = subCombineContactWithSupporter.[ID-Contact]
WHERE (((subCombineContactWithSupporter.Supporter)='ocl'));

当然,在非常具体的情况下,这可能会导致错误,但我认为没有理由这样做。

答案 1 :(得分:0)

加入他们:

INSERT INTO tblSupporters
SELECT tblMailingContacts.*
FROM tblMailingContacts 
LEFT JOIN tblContacts 
ON tblMailingContacts.[ID-Contact] = tblContacts.[ID-Contact]
LEFT JOIN tblCompany 
ON tblContacts.[ID-Company] = tblCompany.[ID-Company]
WHERE (((tblCompany.Supporter)='ocl'));