通过SQL和Access查询多个表并显示结果

马特·霍金斯(Matt Hawkins)

我需要在列表框中显示已购买产品(基于用户搜索)的客户。我在Access中有五个不同的表,它们存储不同的信息,并且彼此之间具有ID(在vb中使用combox框)相关联。我需要能够搜索产品,例如“白面包”,然后程序应显示存储在数据库中的客户的全名和地址。

Table: TransactionDetails
Fields: ID, stockID, custTransID

Table: CustomerTransaction
Fields: ID, custID, dateOfTransaction

Table: CustomerAccountDetails
Fields: ID, custFullName, custAddress, custLandline, 
        custMobile, custDOB, custCreditDetails

Table: StockDescription
Fields: ID, stockName, stockDesc, stockPrice

Table: SupplierDetails
Fields: ID, supplierName, supplier Address

我想我需要使用INNER JOIN一次查询多个表,但是我不确定语法(我是SQL的新手)。到目前为止,我有这个:

Dim productSearch As String

    productSearch = productSrchInput.Text

    Dim databaseConnection As New OleDb.OleDbConnection
    Dim counter As Integer
    Dim array(10) As String

    databaseConnection.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=assignment5database.accdb"

    databaseConnection.Open()

    Dim searchDatabase As OleDbCommand = New OleDbCommand("SELECT CustomerAccountDetails.custFullName, CustomerAccountDetails.custAddress " & _
                                                          "FROM CustomerAccountDetails " & _
                                                          "INNER JOIN StockDescription ON TransactionDetails.stockID = TransactionDetails.custTransID " & _
                                                          "WHERE StockDescription.stockName = '" & productSearch & "'", databaseConnection)
    Dim searchResults As OleDbDataReader = searchDatabase.ExecuteReader

    counter = 1

    Do While searchResults.Read
        srchResultsList.Items.Add(searchResults.Item(0))
        counter += 1
    Loop
    databaseConnection.Close()
凯文·丹宁

您缺少将客户连接到股票详细信息的某些联接。这是Access希望根据您的描述提取数据的SQL。如果您习惯使用SQL Server或MySQL,则括号看起来似乎是多余的,但是如果您不使用括号,则Access会适合您的情况。

SELECT CustomerAccountDetails.custFullName, CustomerAccountDetails.custAddress, StockDescription.stockName
FROM StockDescription 
    INNER JOIN ((CustomerAccountDetails 
    INNER JOIN CustomerTransaction ON CustomerAccountDetails.ID = CustomerTransaction.custID) 
    INNER JOIN TransactionDetails ON CustomerTransaction.ID = TransactionDetails.custTransID) ON StockDescription.ID = TransactionDetails.StockID
WHERE StockDescription.stockName="something"

正如Fionnuala指出的那样,在将其放入代码之前,我几乎总是会使用Access查询设计器构建一个包含多个联接的查询。我几乎总是省略一组括号,或尝试以SQL Server期望并被Access拒绝的结构编写查询。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

显示来自SQL查询的多个结果

来自分类Dev

SQL 查询未显示具有多个 AND 和 OR 子句的所需结果

来自分类Dev

SQL查询根据单独的查询结果连接多个表

来自分类Dev

SQL JOIN多个表和子查询

来自分类Dev

SQL - 如何通过链接查询多个表./关联表

来自分类Dev

SQL查询显示结果

来自分类Dev

MS Access - 通过多个连接表求和的查询

来自分类Dev

显示带有多个答案的sql查询结果

来自分类Dev

SQL查询-完全联接多个表,但返回NULL结果

来自分类Dev

在查询结果中显示表名称;SQL Server 2008

来自分类Dev

SQL内部通过一个查询连接多个表

来自分类Dev

通过分组聚合跨多个表的SQL查询

来自分类Dev

SQL查询从多个表中返回通过某些条件的元素

来自分类Dev

查询多个SQL表

来自分类Dev

在Chart中显示SQL查询的结果(计数(*)和分组依据)

来自分类Dev

Access和/或SQL中的交叉表查询以完成表组合

来自分类Dev

SQL 查询返回多个结果

来自分类Dev

通过vba / sql在Access中联接多个表

来自分类Dev

SQL Server如何使用WHILE查询从多个结果中输出一个表结果

来自分类Dev

Access 2003 中的 SQL:INSERT INTO 和多个 SELECT 查询

来自分类Dev

大型表上的SQL计数和多个子查询

来自分类Dev

大型表上的SQL计数和多个子查询

来自分类Dev

使用多个表和 PIVOT 进行排序的 sql 查询

来自分类Dev

MySql从同一张表和其他表中合并了多个查询的选择结果

来自分类Dev

SQL查询结果相乘并显示错误结果

来自分类Dev

在表中显示姓名和部门的 SQL 查询

来自分类Dev

以角度显示SQL表结果

来自分类Dev

在多个页面上显示查询结果

来自分类Dev

在HTML中显示多个PHP查询结果

Related 相关文章

热门标签

归档