我需要帮助创建一个明确的内部连接,用于我的课程作业
I need help creating an explicit inner join, for my coursework
我有一个 Microsoft Access 2010 数据库,其中包括预订和客户 table。主要 table 是预订 table。客户 table 通过其客户 ID 链接到预订 table,客户 ID 是预订 table 中的外键。我想检索链接到特定预订的客户的电子邮件地址。但是,语法错误消息不断出现,我无法分辨 SQL.
中的错误位置
这是我的计算机科学课程作业。我需要做一个酒店房间预订系统。我正在尝试向客户发送自动提醒电子邮件,时间是他们到达预订前一周。我在 VB.Net 2010 express 中对其进行编程,并为其设置了 Microsoft Access 2010 数据库。
- 我已经多次检查 table 和列的所有名称,但其中 none 拼写错误。
- 我已经阅读了关于连接的可汗学院教程并使用 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
我希望结果是一个电子邮件地址,但我只是收到一条语法错误消息
Syntax error in FROM clause.
MS Access 要求将内部联接显式声明为 INNER JOIN
,并且不会将 JOIN
shorthand 解释为其他 RDBMS 接受的内部联接。
因此,您的 SQL 声明需要是:
SELECT tblCustomer.Email_Address
FROM tblBookings INNER JOIN tblCustomer ON tblBookings.CustomerID = tblCustomer.CustomerID
WHERE tblBookings.BookingID = 1
我有一个 Microsoft Access 2010 数据库,其中包括预订和客户 table。主要 table 是预订 table。客户 table 通过其客户 ID 链接到预订 table,客户 ID 是预订 table 中的外键。我想检索链接到特定预订的客户的电子邮件地址。但是,语法错误消息不断出现,我无法分辨 SQL.
中的错误位置这是我的计算机科学课程作业。我需要做一个酒店房间预订系统。我正在尝试向客户发送自动提醒电子邮件,时间是他们到达预订前一周。我在 VB.Net 2010 express 中对其进行编程,并为其设置了 Microsoft Access 2010 数据库。
- 我已经多次检查 table 和列的所有名称,但其中 none 拼写错误。
- 我已经阅读了关于连接的可汗学院教程并使用 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
我希望结果是一个电子邮件地址,但我只是收到一条语法错误消息
Syntax error in FROM clause.
MS Access 要求将内部联接显式声明为 INNER JOIN
,并且不会将 JOIN
shorthand 解释为其他 RDBMS 接受的内部联接。
因此,您的 SQL 声明需要是:
SELECT tblCustomer.Email_Address
FROM tblBookings INNER JOIN tblCustomer ON tblBookings.CustomerID = tblCustomer.CustomerID
WHERE tblBookings.BookingID = 1