Member 11856456 Ответов: 0

Как вставить идентификационный номер из одной таблицы в другую при использовании оператора match?


То, что я пытаюсь сделать, - это создать оператор, который позволяет мне вставлять связанные источники в одну таблицу и использовать соответствующие критерии для обновления другой. Например,

Таблица 1, известная как (личная), имеет ID, First_name, Last_name, Phone_number, Address, DOB
Таблица 2 сопоставление таблица имеет идентификатор, Имя, Фамилия, друзей, адрес, дата рождения, Individual_ID, Источник, Ссылка
Таблица 3 известный как (источников) имеет идентификатор Individual_ID(который ссылается на столбец ID из первой таблицы), Источник, Ссылка

Все, что я пытаюсь сделать, - это когда Таблица 1 и таблица 2 совпадают, обновить таблицу 1 и таблицу 3. Как лучше всего использовать три таблицы в операторе соответствия?

Вот что у меня есть до сих пор:

Try
           Dim sqlcon As New SqlConnection("SQLCONSTRING")

           Dim cb2 As New StringBuilder("MERGE INTO ")
           cb2.AppendFormat("{0} as T using {1} as S", "[" + ListBox1.SelectedItem.ToString + "]", "[" + ListBox2.SelectedItem.ToString + "]")

           Dim sbOn As New StringBuilder(" on ")
           Dim andRequired As Boolean = False
           For Each item In CheckedListBox1.CheckedItems
               If andRequired Then
                   sbOn.Append(" AND ")
               End If
               Dim columnName As String = item.ToString()
               sbOn.AppendFormat("T.[{0}] = S.[{1}]", columnName, columnName)
               andRequired = True
           Next

           cb2.Append(sbOn.ToString())

           Dim sbOn2 As New StringBuilder("")
           Dim andRequired2 As Boolean = False
           For Each item In CheckedListBox2.CheckedItems
               If andRequired2 Then
                   sbOn2.Append(", ")
               End If
               Dim columnName As String = item.ToString()
               sbOn2.AppendFormat("T.[{0}] = S.[{1}]", columnName, columnName)
               andRequired2 = True
           Next

           cb2.AppendFormat(" When Matched then Update Set ")
           cb2.Append(sbOn2.ToString() + ";")

           Dim sbOn1 As New StringBuilder(" on ")
           Dim andRequired1 As Boolean = False
           For Each item In CheckedListBox1.CheckedItems
               If andRequired1 Then
                   sbOn1.Append(" AND ")
               End If
               Dim columnName As String = item.ToString()


               sbOn1.AppendFormat("T1.[{0}] = T2.[{1}]", columnName, columnName)

               andRequired1 = True
           Next

           Dim dr As DialogResult = MessageBox.Show("Would you like to delete matched records from " + ListBox2.SelectedItem.ToString + "?",
                              "Remove duplicates", MessageBoxButtons.YesNo)

           If dr = DialogResult.Yes Then

               cb2.AppendFormat(" DELETE T1 FROM [{0}] T1 JOIN [{1}] T2", ListBox2.SelectedItem.ToString, ListBox1.SelectedItem.ToString)
               cb2.Append(sbOn1.ToString() + ";")

               Dim sql As String = cb2.ToString()

               sqlcon.Open()
               Dim cmd As SqlClient.SqlCommand
               cmd = New SqlClient.SqlCommand(sql, sqlcon)
               cmd.CommandTimeout = False

               Dim myReader As SqlDataReader = cmd.ExecuteReader
               myReader.Read()

               Dim I As Integer = myReader.RecordsAffected
               Dim S As String = I 'was using  this: I/ 2

               MessageBox.Show(S.ToString + " records effected")

               sqlcon.Close()

           Else

               Dim sql As String = cb2.ToString()

               MessageBox.Show(cb2.ToString)
               sqlcon.Open()
               Dim cmd As SqlClient.SqlCommand
               cmd = New SqlClient.SqlCommand(sql, sqlcon)
               cmd.CommandTimeout = False

               Dim myReader As SqlDataReader = cmd.ExecuteReader
               myReader.Read()

               Dim I As Integer = myReader.RecordsAffected
               Dim S As String = I 'was using  this: I/ 2

               MessageBox.Show(S.ToString + " records effected")

               sqlcon.Close()
               ' MessageBox.Show("task completed")

           End If

       Catch ex As Exception

       End Try


Что я уже пробовал:

Я сделал заявление о совпадении, используя как таблицу 1, так и таблицу 2, представленную в приведенном выше анализе. Однако я не уверен, как включить 3-ю таблицу в оператор match and merge.

Patrice T

И у вас есть какой-то код ?

Member 11856456

Только что отправил код.

0 Ответов