我有一个 Microsoft Access 2010 数据库,其中包括 Bookings 和 Customer 表。主表是 Bookings 表。 Customer 表通过其客户 ID 链接到 Bookings 表,客户 ID 是 Bookings 表中的外键。我想检索与某个预订相关联的客户的电子邮件地址。但是,语法错误消息不断出现,我无法确定错误在 SQL 中的位置。
这是我的计算机科学类(class)。我需要做一个酒店房间预订系统。我正在尝试在客户预定到达前一周向客户发送自动提醒电子邮件。我在 VB.Net 2010 express 中对其进行编程,并为其设置了 Microsoft Access 2010 数据库。
这是我的代码:
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
我希望结果是一个电子邮件地址,但我只是收到一条语法错误消息
Syntax error in FROM clause.
最佳答案
MS Access 要求将内部连接明确声明为 INNER JOIN
,并且不会解释 JOIN
其他 RDBMS 接受的内部连接的简写。
因此,您的 SQL 语句需要:
SELECT tblCustomer.Email_Address
FROM tblBookings INNER JOIN tblCustomer ON tblBookings.CustomerID = tblCustomer.CustomerID
WHERE tblBookings.BookingID = 1
关于sqlite - 我需要帮助为我的类(class)创建一个明确的内部连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54063780/