将两个访问表合二为一

Posted

技术标签:

【中文标题】将两个访问表合二为一【英文标题】:Join two access table into one 【发布时间】:2011-03-20 03:59:05 【问题描述】:

谁能帮我写一个查询,将两个表合二为一。我尝试了以下方法,但出现错误:

“没有为一个或多个必需参数指定值。”

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

【问题讨论】:

你的表结构是什么样的?您的 SQL 看起来是正确的,但很可能 col1 或 col2 不存在于其中一个表中。另外,请包括所有相关代码。请帮助我们为您提供帮助。 你的编程环境是什么?在 VBA 中,您当然不能在声明变量的同一行中为其赋值。 【参考方案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   |

还有各种不同的outerinner JOINS 查看概览here

【讨论】:

【参考方案2】:

假设join 不是指该术语在 sql 上下文中的通常含义,如果您要问一个 sql 问题,并且假设您想要 COMBINE 从两个表中得到结果,则 sql如果表Table1Table2 存在于数据库中并且它们都有col1 和col2,那么你写的是正确的。考虑到UNION 运算符默认只选择不同的值,而UNION ALL 也会选择重复值。但是您遇到的错误:"No value given for one or more required parameters." 好像不是sql错误。它似乎是由您的编程代码引发的,您最有可能在其中填充数据集/记录集。如果发布更多代码,可以提供更好的答案。

【讨论】:

【参考方案3】:

我认为您需要共享其余代码,看起来您正在使用类似的东西

Dim cmd as ADODB.command
Dim CmdStr As String = "SELECT col1, col2 FROM table1 UNION SELECT col1,col2 FROM table2"

cmd.CommandText = cmdStr

给我们更多的代码,也许我们可以更好地帮助你。

【讨论】:

【参考方案4】:

非常感谢你们所有人,我是绝对的新人,但我觉得我现在可以让它工作了。这是我正在使用的代码

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 个空格)。【参考方案5】:

看起来问题出在您的数据源字符串上。默认情况下,访问权限有一个名为 Admin 的用户,其密码为空。除非您为数据库添加了安全性,否则连接字符串应该是

"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\deletedb.accdb;User ID=Admin;Password=" 

【讨论】:

以上是关于将两个访问表合二为一的主要内容,如果未能解决你的问题,请参考以下文章

SQL 脚本帮助,将两个查询合二为一

如何在 SQL 中组合两个查询? (子查询)

SQL 如何将一个表中的两条或多条拥有相同ID的记录合并为一条?

Python包将两个热图合二为一(将每个正方形分成两个三角形)

将两个查询合二为一

如何将 8 个查询合二为一来创建一个过程?