Чтение из нескольких таблиц в средстве чтения данных vb.net
-
20-09-2019 - |
Вопрос
Я пытаюсь прочитать две таблицы в MySQL:
Dim sqlcom As MySqlCommand = New MySqlCommand("Select * from mother, father where IDNO= '" & TextBox14.Text & "' ", sqlcon)
-Но я получаю эту ошибку:
Column 'IDNO' in where clause is ambiguous
Вот весь код:
Dim NoAcc As String
Dim NoAccmod2 As String
Dim NoPas As String
Dim sqlcon As New MySqlConnection("Server=localhost; Database=school;Uid=root;Pwd=nitoryolai123$%^;")
Dim sqlcom As MySqlCommand = New MySqlCommand("Select * from mother, father where IDNO= '" & TextBox14.Text & "' ", sqlcon)
sqlcon.Open()
Dim rdr As MySqlDataReader
rdr = sqlcom.ExecuteReader
If rdr.HasRows Then
rdr.Read()
NoAcc = rdr("IDNO")
If (TextBox14.Text = NoAcc) Then TextBox7.Text = rdr("MOTHER")
If (TextBox14.Text = NoAcc) Then TextBox8.Text = rdr("MOTHER_OCCUPATION")
If (TextBox14.Text = NoAcc) Then TextBox10.Text = rdr("FATHER")
If (TextBox14.Text = NoAcc) Then TextBox11.Text = rdr("FATHER_OCCUPATION")
End If
-Есть какие-нибудь предложения, которые могут помочь решить эту проблему?Или даже другие методы достижения цели чтения данных из двух таблиц с помощью средства чтения данных?
Это winform, а не веб-форма
Решение
Попробуйте это по своей команде:
Dim sqlcom As MySqlCommand = New MySqlCommand("Select * from mother, father where mother.IDNO= '" & TextBox14.Text & "' AND father.IDNO = '" & TextBox14.Text & "'", sqlcon)
Другие советы
Не видя схемы ваших таблиц, я не могу сказать наверняка, но предполагаю, что ваши столбцы идентификаторов называются одинаково в обеих таблицах.Чтобы обойти это, вам нужно будет полностью определить тот, который вы ищете, используя mother.IDNO или Father.IDNO (или mother.IDNO AND Father.IDNO).
Если (TextBox14.Text = NoAcc) Тогда TextBox7.Text = rdr("MOTHER")
Если (TextBox14.Text = NoAcc) Тогда TextBox8.Text = rdr("MOTHER_OCCUPATION")
Если (TextBox14.Text = NoAcc) Тогда TextBox10.Text = rdr("ОТЕЦ")
Если (TextBox14.Text = NoAcc) Тогда TextBox11.Text = rdr("FATHER_OCCUPATION")
Выглядит довольно избыточно/неэффективно, не так ли?
Также вы можете попробовать использовать INNER JOIN вместо двойного IDNO "Where"