将两个访问表合并为一个

时间:2011-03-20 03:59:06

标签: sql ms-access join

有人可以帮我写一个将两个表连接成一个的查询。我尝试了以下但是我收到了错误:

  

“没有给出一个或多个必需参数的值。”

Dim CmdStr As String = "SELECT  col1, col2 FROM table1 UNION SELECT  col1,col2 FROM table2"

5 个答案:

答案 0 :(得分:1)

你的问题不清楚。 UNIONJOIN完全不同。我们需要有关表格外观和所需结果的详细信息。

如果你有例如。

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来自两个表,如果数据库中存在表Table1Table2并且它们都有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="