尝试使用1语句查询2访问表

时间:2013-07-23 14:35:29

标签: c# ms-access

我一直在做研究,但找不到使用一个查询从多个表中获取数据的方法。我想要实现的是从Access数据库中的一个表获取信息,并使用该信息从同一数据库中的不同表中获取更多数据

这是我到目前为止的代码......

                string end = "ENDDATE";
                string qual = "CGA0113";
                string start = "START";

                ad.SelectCommand = new OleDbCommand("SELECT* FROM [AC_ECONOMIC] Where KEYWORD = '" + end + "'AND QUALIFIER = '" + qual + "' AND EXPRESSION LIKE 'SN%'", con);

我希望能够从一个名为AC_PROPERTY的单独表中获取数据,该表与来自该AC_ECONOMIC表的上述查询中的SN相同。我正在研究连接,并认为这是要走的路,但我不太确定语法或者是否可行。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

正确,一个内部联接将是要走的路。您基本上需要构造一个语句,通过它们的公共字段连接2个表。像这样:

SELECT * FROM [AC_ECONOMIC] a
INNER JOIN [AC_PROPERTY] b
on [AC_ECONOMIC].SN=[AC_PROPERTY].SN   
Where KEYWORD = '" + end + "'AND QUALIFIER = '" + qual + "' AND EXPRESSION LIKE 'SN%'

以上陈述只是一个例子。我不知道2个表之间的公共列是否实际上称为“SN”。

<强>更新

正如@Geek所建议的那样,您可以在语句中引用它们之后对表进行别名,这样您就不会每次都输入完整的表名。例如,上述语句也可以写成:

SELECT a.*, b.* FROM [AC_ECONOMIC] a
INNER JOIN [AC_PROPERTY] b
on a.SN=b.SN   
Where a.KEYWORD = '" + end + "'AND a.QUALIFIER = '" + qual + "' AND b.EXPRESSION LIKE 'SN%' 

注意WHERE子句如何使用“a”(AC_ECONOMIC)和b(AC_PROPERTY)中的列进行过滤。