powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / КАК объеденить две таблицы в одну?
12 сообщений из 12, страница 1 из 1
КАК объеденить две таблицы в одну?
    #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
КАК объеденить две таблицы в одну?
    #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
КАК объеденить две таблицы в одну?
    #37318569
TpaBka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ой нето )
щас доем и напишу
...
Рейтинг: 0 / 0
КАК объеденить две таблицы в одну?
    #37318596
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ДЛя полного перебора вариантов - достаточно одной таблэтки:
Код: plaintext
SELECT * FROM Таблица1, Таблица2 INTO Таблица3
...
Рейтинг: 0 / 0
КАК объеденить две таблицы в одну?
    #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
КАК объеденить две таблицы в одну?
    #37318644
Фотография Andrey13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо всем щас буду пробовать, отпешусь о результатах
...
Рейтинг: 0 / 0
КАК объеденить две таблицы в одну?
    #37318647
TpaBka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Уже опоздал
...
Рейтинг: 0 / 0
КАК объеденить две таблицы в одну?
    #37318656
Фотография Andrey13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Guest пожалуйста объясни что значит c.* a и b.
...
Рейтинг: 0 / 0
КАК объеденить две таблицы в одну?
    #37318665
Фотография big-duke
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Andrey13Guest пожалуйста объясни что значит c.* a и b.
c.* - выбрать все поля из таблицы
a и b - алиаз для таблиц
(select Поле1, Поле2, Поле3 from Табл1) и (select Поле4, Поле5 from Табл2) соответственно.
...
Рейтинг: 0 / 0
КАК объеденить две таблицы в одну?
    #37318708
Фотография Andrey13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо большое за идею все получилось, правда пришлось помучится ререписывая запрос под себя. В связи с этим возник вопрос. У сеня так и не вышло написать используя алиас "С". Я создал в базе access промежуточный запрос вместо алиаса "C". Потом обращаюсь уже к нему.
На сколько такой подход не верен с точки зрения прфи? Спасибо.
Стоит ли тратить время и переписыать?
...
Рейтинг: 0 / 0
КАК объеденить две таблицы в одну?
    #37318720
Фотография big-duke
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Andrey13,

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


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