【问题标题】: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 中,您当然不能在声明变量的同一行中为其赋值。

标签: sql ms-access join


【解决方案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   |

还有各种不同的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=" 
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2017-10-01
          • 1970-01-01
          • 2012-10-21
          • 2016-02-06
          • 2014-09-04
          • 1970-01-01
          • 2015-12-30
          相关资源
          最近更新 更多