Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / КАК объеденить две таблицы в одну? / 12 сообщений из 12, страница 1 из 1
21.06.2011, 17:09
    #37318416
Andrey13
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
КАК объеденить две таблицы в одну?
Здравствуйте. Искал похожие вопросы не нащел.

Есть две таблицы Табл1 (Поле1, Поле2, Поле3) и Табл2(Поле4, Поле5), из них необходимо заполнить Табл3(Поле1, Поле2, Поле3,Поле4, Поле5). При условии что строк обсалютно идентичными данными по (Поле1, Поле2, Поле3,Поле4, Поле5) в Табл3 еще нет.
Пробовал крутить в циклах все эти таблицы запутался. Должен быть способ сделать это проще SQL запросом.
Если можно дайте любую строчку кода буду разбираться. (ADODB, база Access)
Спасибо.
...
Рейтинг: 0 / 0
21.06.2011, 18:01
    #37318561
TpaBka
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
КАК объеденить две таблицы в одну?
Первое что пришло в голову
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
Dim conn As New ADODB.Connection

    SourceBase = "C:\...."
    ConnString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & SourceBase & ";Persist Security Info=False"
    conn.Open ConnString
    
Dim rs As New ADODB.Recordset

    rs.CursorLocation = adUseClient
    rs.CursorType = adOpenDynamic
    rs.LockType = adLockOptimistic

SQL = "SELECT Таблица1.Поле1, Таблица1.Поле2, Таблица1.Поле3, 1  AS Tbl_i " & _
        "From Таблица1 " & _
        "Union " & _
        "SELECT Таблица2.Поле4, Таблица2.Поле5, '' AS Поле6, 2  AS Tbl_i " & _
        "FROM Таблица2;"
rs.Open SQL, conn

If rs.RecordCount <>  0  Then
    Do Until rs.EOF = True
    
    If rs("Tbl_i") =  1  Then
        SQL = "INSERT INTO Таблица3 ( Поле1, Поле2, Поле3  ) " & _
            "SELECT " & "'" & rs("Поле1") & "'" & ", " & "'" & rs("Поле2") & "'" & ", " & "'" & rs("Поле3") & "'"
    Else
        SQL = "INSERT INTO Таблица3 ( Поле4, Поле5 ) " & _
            "SELECT " & "'" & rs("Поле1") & "'" & ", " & "'" & rs("Поле2") & "'"
    End If

    conn.Execute SQL
    rs.MoveNext
    Loop
End If
rs.Close
conn.Close
...
Рейтинг: 0 / 0
21.06.2011, 18:04
    #37318569
TpaBka
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
КАК объеденить две таблицы в одну?
ой нето )
щас доем и напишу
...
Рейтинг: 0 / 0
21.06.2011, 18:16
    #37318596
AndreTM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
КАК объеденить две таблицы в одну?
ДЛя полного перебора вариантов - достаточно одной таблэтки:
Код: plaintext
SELECT * FROM Таблица1, Таблица2 INTO Таблица3
...
Рейтинг: 0 / 0
21.06.2011, 18:17
    #37318597
ё
ё
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
КАК объеденить две таблицы в одну?
Andrey13Здравствуйте. Искал похожие вопросы не нащел.

Есть две таблицы Табл1 (Поле1, Поле2, Поле3) и Табл2(Поле4, Поле5), из них необходимо заполнить Табл3(Поле1, Поле2, Поле3,Поле4, Поле5). При условии что строк обсалютно идентичными данными по (Поле1, Поле2, Поле3,Поле4, Поле5) в Табл3 еще нет.
Пробовал крутить в циклах все эти таблицы запутался. Должен быть способ сделать это проще SQL запросом.
Если можно дайте любую строчку кода буду разбираться. (ADODB, база Access)
Спасибо.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
insert into Табл3 (Поле1, Поле2, Поле3,Поле4, Поле5)

select c.* from
(select a.Поле1, a.Поле2, a.Поле3, b.Поле4, b.Поле5 
from
(select Поле1, Поле2, Поле3 from Табл1) a,
(select Поле4, Поле5 from Табл2) b) c

left join Табл3 
  on    Табл3.Поле1=c.Поле1 
    and Табл3.Поле2=c.Поле2 
    and Табл3.Поле3=c.Поле3 
    and Табл3.Поле4=c.Поле4 
    and Табл3.Поле5=c.Поле5

where  Табл3.id is null
...
Рейтинг: 0 / 0
21.06.2011, 18:40
    #37318644
Andrey13
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
КАК объеденить две таблицы в одну?
Спасибо всем щас буду пробовать, отпешусь о результатах
...
Рейтинг: 0 / 0
21.06.2011, 18:41
    #37318647
TpaBka
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
КАК объеденить две таблицы в одну?
Уже опоздал
...
Рейтинг: 0 / 0
21.06.2011, 18:46
    #37318656
Andrey13
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
КАК объеденить две таблицы в одну?
Guest пожалуйста объясни что значит c.* a и b.
...
Рейтинг: 0 / 0
21.06.2011, 18:49
    #37318665
big-duke
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
КАК объеденить две таблицы в одну?
Andrey13Guest пожалуйста объясни что значит c.* a и b.
c.* - выбрать все поля из таблицы
a и b - алиаз для таблиц
(select Поле1, Поле2, Поле3 from Табл1) и (select Поле4, Поле5 from Табл2) соответственно.
...
Рейтинг: 0 / 0
21.06.2011, 19:40
    #37318708
Andrey13
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
КАК объеденить две таблицы в одну?
Спасибо большое за идею все получилось, правда пришлось помучится ререписывая запрос под себя. В связи с этим возник вопрос. У сеня так и не вышло написать используя алиас "С". Я создал в базе access промежуточный запрос вместо алиаса "C". Потом обращаюсь уже к нему.
На сколько такой подход не верен с точки зрения прфи? Спасибо.
Стоит ли тратить время и переписыать?
...
Рейтинг: 0 / 0
21.06.2011, 19:54
    #37318720
big-duke
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
КАК объеденить две таблицы в одну?
Andrey13,

Если вам так удобней, используйте сохраненный запрос.
Но в свободное время все же попрактикуйтесь с запросами через код - еще не раз пригодится.
...
Рейтинг: 0 / 0
21.06.2011, 19:56
    #37318724
Andrey13
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
КАК объеденить две таблицы в одну?
Точнее сказать не удобней а наглядней. Спасибо всем вопрос закрыт.
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / КАК объеденить две таблицы в одну? / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]