我需要帮助为我的课程创建明确的内部联接

时间:2019-01-06 16:48:31

标签: sqlite ms-access-2010 vb.net-2010

我有一个Microsoft Access 2010数据库,其中包括“预订”和“客户”表。主表是“预定”表。 Customer表通过其客户ID链接到Bookings表,Customer表是Bookings表中的外键。我想检索链接到某个预订的客户的电子邮件地址。但是,语法错误消息不断出现,我无法确定错误在SQL中的位置。

这是我的计算机科学课程。我需要制作一个酒店房间预订系统。我正在尝试将自动提醒电子邮件发送给客户,比他们要提前预订的时间提前一周。我正在VB.Net 2010 Express中对其进行编程,并为此设置了Microsoft Access 2010数据库。

  • 我已经多次检查了表和列的所有名称,但是没有一个拼写错误。
  • 我已经阅读了有关连接的Khan Academy教程,并使用SQLite接口测试了我的查询。它在那里工作,但在我的系统中不工作。

这是我的代码:

Imports System.Data.OleDb

Dim CN As OleDbConnection
Dim DR As OleDbDataReader
Dim SQL As String

Sub OpenDatabase()
    CN = New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\Coursework Prototype Database.mdb;")
    CN.Open()
End Sub

Public Sub ExecuteSQL()
    Dim CM As New OleDbCommand(SQL, CN)
    DR = CM.ExecuteReader
End Sub

Sub RetrieveCustomerEmail()
    OpenDatabase()
    SQL = ("SELECT tblCustomer.Email_Address FROM tblBookings JOIN tblCustomer ON tblBookings.CustomerID = tblCustomer.CustomerID Where tblBookings.BookingID = 1")
    ExecuteSQL()
    DR.Read()

    Dim CustomerEmail As String = DR.Item("Email_Address").ToString
    CN.Close()
End Sub

我希望结果是一个电子邮件地址,但我只是收到一条语法错误消息,提示

  

FROM子句中的语法错误。

1 个答案:

答案 0 :(得分:0)

MS Access要求将内部联接明确声明为INNER JOIN,并且不会解释其他RDBMS接受的内部联接的eval速记。

因此,您的SQL语句必须为:

JOIN