有人可以帮我写一个将两个表连接成一个的查询。我尝试了以下但是我收到了错误:
“没有给出一个或多个必需参数的值。”
Dim CmdStr As String = "SELECT col1, col2 FROM table1 UNION SELECT col1,col2 FROM table2"
答案 0 :(得分:1)
你的问题不清楚。 UNION和JOIN完全不同。我们需要有关表格外观和所需结果的详细信息。
如果你有例如。
table1 table2
| col1 | col2 | | col1 | col2 |
|------|------| |------|------|
| 1 | 4 | | 5 | 7 |
UNION的结果(仅当table1和table2具有相同的数据类型时才可能)
SELECT col1, col2 FROM table1
UNION
SELECT col1, col2 FROM table2
|------|------|
| 1 | 4 |
| 5 | 7 |
JOIN的结果
SELECT t1.col1, t1.col2, t2.col1, t2.col2
FROM table1 t1 CROSS JOIN table2 t2
|t1.col1|t1.col2|t2.col1|t2.col2|
|-------|-------|-------|-------|
| 1 | 4 | 5 | 7 |
还有更多不同种类的外部和内部JOINS 查看概述here
答案 1 :(得分:1)
假设join
你不是指sql上下文中术语的通常含义,如果你问一个sql问题,你应该这样做,并假设你想要COMBINE
来自两个表,如果数据库中存在表Table1
和Table2
并且它们都有col1和col2,那么您编写的sql是正确的。请注意,默认情况下UNION
运算符仅选择不同的值,而UNION ALL
也会选择重复值。但是您遇到的错误:
"No value given for one or more required parameters."
似乎不是一个SQL错误。它似乎是由您的编程代码引发的,您最有可能填充数据集/记录集。如果发布了更多代码,则可以提供更好的答案。
答案 2 :(得分:0)
我认为你需要分享其余的代码,看起来你正在使用这样的东西
Dim cmd as ADODB.command
Dim CmdStr As String = "SELECT col1, col2 FROM table1 UNION SELECT col1,col2 FROM table2"
cmd.CommandText = cmdStr
向我们提供更多代码,也许我们可以为您提供更好的帮助。
答案 3 :(得分:0)
非常感谢你们所有人,我是绝对的新人,但我觉得我现在可以开始工作。我正在使用的代码
Imports System.Data.OleDb
Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim con As New OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\deletedb.accdb;Jet OLEDB:Database Password=1")
Dim CmdStr As String = "SELECT col1, col2 FROM table1 UNION SELECT col1,col2 FROM table2"
con.Open()
Dim cmd As OleDbCommand = New OleDbCommand(CmdStr, con)
cmd.ExecuteNonQuery()
con.Close()
MsgBox("Done")
End Sub
答案 4 :(得分:0)
看起来问题是您的数据源字符串。默认情况下,访问权限的用户名为Admin,密码为空。除非您为数据库添加了安全性,否则连接字符串应为
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\deletedb.accdb;User ID=Admin;Password="