2014-10-27 171 views
0

大家好,感谢您的帮助! 我试图使用JOIN到fitlered SQL语句的表,以填充组合框结合(有道理?)MS Access VBA:将2条SQL语句与一个LEFT JOIN结合

这里是主要的SQL查询:

MainSQLquery = "SELECT QuotationID, QuoteDate, EmployeeID FROM TestTable1" 

我想写一个声明使用这样的另一个表如下:

SELECT EmployeeID, EmployeeName 
FROM MainSQLquery LEFT JOIN EmployeeTable 
GROUP BY EmployeeID 

但我不明白。我得到一个“语法错误FROM子句”即使是这样简单的事情:

ComboSQL = "SELECT EmployeeID FROM " & MainSQLQuery 
Me.Combo2.RowSource = ComboSQL 

你们是否知道任何方式做到这一点?

******* **********背景

对于那些你们谁愿意看到更大的画面,我有一个显示的报价列表的窗体和基于动态SQL语句,它与一个WHERE子句根据不同的输入filetered并显示,当它看起来是这样的:

QuoteID Quote date Employee ID 
1   10/13   1 
2   10/13   2 
3   10/13   2 
4   09/18   1 
5   08/10   2 
6   07/16   3 
7   06/27   3 

在主要形式,我有我用它来过滤这些子窗体,它完美地组合框。但我也需要我的组合框以与子表单内容相同的方式进行过滤,并且没有任何重复(这是我现在无法做到的唯一的事情)。

到目前为止我用同样的过滤SQL查询子窗体和所有的组合框的有一个整洁的员工组合框,看起来像这样(与上面的例子),所以不是:

1 
2 
3 

我得到的而不是(与子窗体):

1 
2 
2 
1 
2 
3 
3 

我的想法是有子窗体的主SQL查询,基于主之一的组合框另一sqlquery的,这样的事情:

SELECT EmployeeID, EmployeeName 
FROM MainSQLquery LEFT JOIN EmployeeTable 
GROUP BY EmployeeID 

如果我能得到这个工作,过滤器仍然会在mainSQL中构建,我可以将EmployeeID字段分组而不会出现问题。

我想它应该是相当简单的,但我不能说得对,有一些我不知道用SAL作为另一个来源。

(我希望我能张贴图片或数据库的样本,而是偏执的家伙得到了我以前的帖子删除,因为这一点,所以它有纯文本,比较遗憾的是这样做)当你有

回答

0

一个JOIN你应该有一个ON让数据库知道如何与这些表:

SELECT EmployeeID, EmployeeName 
FROM (
    SELECT QuotationID, QuoteDate, EmployeeID 
    FROM TestTable1 
) AS MainSQLquery LEFT JOIN EmployeeTable 
ON MainSQLquery.EmployeeID = EmployeeTable.ID 
GROUP BY EmployeeID 

LEFT JOIN沾到左表中的所有记录的加入 - MainSQLquery - 只有从记录右表 - EmployeeTable - 匹配。如果在右表中找不到匹配项,则返回NULL值。

考虑这个例子:

TestTable1 
QuotationID | QuoteDate | EmployeeID 
-------------------------------------------- 
1    10/1/2014  1 
2    10/8/2014  2 
3    10/5/2014  3 
4    10/10/2014  1 
5    10/20/2014  5 

EmployeeTable 
ID | EmployeeName 
---------------------- 
1  Jeremy Smith 
2  Pam Engles 
3  Achim Flemmish 
4  Sandra Hayes 

这将是上述查询的结果:

Result 
EmployeeID | EmployeeName 
-------------------------------- 
1    Jeremy Smith 
2    Pam Engles 
3    Achim Flemmish 
5    NULL 
+0

嗨jwatts。它与SELECT/FROM语句一起工作,但如果我在mainSQLquery中添加一个WHERE,则会出现“FROM子句中的语法错误”。在这种情况下是否还有其他要补充的内容? – Anthis 2014-10-27 05:31:07

+0

我拿回来,它的作品!我只是重新编写它,出于某种原因,错误没有显示出来,不幸的是我不知道我以前的代码有什么区别!无论如何,谢谢你! – Anthis 2014-10-27 05:36:55