Как вставить идентификационный номер из одной таблицы в другую при использовании оператора 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
Только что отправил код.