在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(没有图形后端)中实现这一点,并且必须将两个字符串放在一个查询字符串中。 (在这种特殊情况下,无法将内部选择作为对象存储在后端。)
对我而言,它似乎是一个子查询,但没有弄清楚如何结合这两个脚本...欢迎任何帮助。
抱歉我的英文。这不是我的母语。
答案 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'));