Соедините две таблицы доступа в одну - PullRequest
0 голосов
/ 20 марта 2011

Может кто-нибудь помочь мне написать запрос, который объединит две таблицы в одну.Я попробовал следующее, но я получаю сообщение об ошибке:

"Не задано значение для одного или нескольких обязательных параметров."

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

Ответы [ 5 ]

1 голос
/ 20 марта 2011

Предполагая под join, вы не имеете в виду обычное значение термина в контексте SQL, которое следует использовать, если вы задаете вопрос SQL, и, предполагая, что вы хотите COMBINE результаты из двух таблиц, SQLВы написали правильно, если таблицы Table1 и Table2 существуют в базе данных, и у них обоих есть col1 и col2.Учтите, что оператор UNION выбирает только отдельные значения по умолчанию, тогда как UNION ALL также выбирает дубликаты.Но у вас есть ошибка:
"No value given for one or more required parameters."
не похоже на ошибку sql.Похоже, это вызвано вашим программным кодом, где вы, скорее всего, заполняете свой набор данных / набор записей.Если опубликовано больше кода, можно дать лучший ответ.

1 голос
/ 20 марта 2011

Ваш вопрос неясен. 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   |

еще больше существуют различные виды внешних и внутренних СОЕДИНЕНИЙ см. обзор здесь

0 голосов
/ 23 марта 2011

Похоже, проблема в вашей строке источника данных. По умолчанию доступ имеет пользователь с именем Admin с пустым паролем. Если вы не добавили защиту в базу данных, строка подключения должна быть

"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\deletedb.accdb;User ID=Admin;Password=" 
0 голосов
/ 21 марта 2011

Большое спасибо всем вам, я абсолютный новичок, но я чувствую, что могу заставить его работать сейчас. Здесь код, который я использую

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
0 голосов
/ 20 марта 2011

Я думаю, что вам нужно поделиться остальным кодом, похоже, вы используете что-то вроде этого

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

cmd.CommandText = cmdStr

дайте нам больше вашего кода, возможно, мы сможем помочь вам лучше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...