【发布时间】:2013-10-04 19:06:34
【问题描述】:
我有三个 MS Access 表。它们是Income_Statements、Balance_Sheets 和Cash_Flow_Statements。这些表都共享相同的主键。它是一个三字段主键,包括Ticker、[Year] 和Period。我想在不复制主键字段的情况下组合所有这三个表。我也有一个需要满足的日期标准。我需要显示的记录等于或早于我从名为dtpDateSelection 的DateTimePicker 中选择的日期。
这是我目前所拥有的:
Dim year As String = dtpDateSelection.Value.Year
Dim quarter As String = ((dtpDateSelection.Value.Month - 1) \ 3) + 1
Dim cmd2 As OleDbCommand = New OleDbCommand("SELECT Ticker, [Year], Period, Income_Statements.Net_Income, Balance_Sheets.Total_Assets, Cash_Flow_Statements.Net_Cash_Flow_Operating FROM Income_Statements, Balance_Sheets, Cash_Flow_Statements WHERE Period < 5 AND Period <= #" & quarter & "# AND [Year] <= #" & year & "#", con)
Dim quarterlyReader As OleDbDataReader = cmd2.ExecuteReader()
Dim Quarterly As New DataTable
Quarterly.Load(quarterlyReader)
DataGridViewScreen.DataSource = Quarterly
quarterlyReader.Close()
我的WHERE 语句有问题。我怎样才能做到这一点?
【问题讨论】:
-
很难知道你在做什么而不看你是如何解析 DateTimePicker 的。但看起来您可能缺少一两个 JOIN。
-
我可以做这样的事情吗:
"SELECT * FROM Income_Statements, Balance_Sheets, Cash_Flow_Statements WHERE Period < 5 AND Period <= #" & quarter & "# AND [Year] <= #" & year & "#"在某处使用JOIN声明? -
您需要一个
JOIN(即“组合”)并使用这些主键。见玲儿的回答