【问题标题】:joint in vb.net with sql server与 sql server 在 vb.net 中联合
【发布时间】:2015-05-12 13:49:03
【问题描述】:

大家好,我有两张表 Patient([NumPatient],[NomPatient],[AdressePatient],[GSM],[Ville],[CIN]) 和 rdvs([num_rdv],[date_heure_rdv],[etat_rdv], [num_pat])。 num_pat 是 rdvs 表中的外键。 我想在两个表之间建立一个联合,以便根据表 rdvs 的 [num_pat] 的值显示表患者值中的 [NomPatient] 我试图让它像这段代码显示的那样,但它没有工作:

Private Sub Combonumrdv_SelectedIndexChanged(sender As Object, e As EventArgs) Handles Combonumrdv.SelectedIndexChanged
    Connection()
    con.Open()
    cmd.CommandText = "select NomPatient from Patients INNER JOIN rdvs on Patients.NumPatient = '" & Combonumrdv.SelectedValue & "' = rdvs.num_pat "
    Dim res As String = cmd.ExecuteScalar
    txtnompat.Text = res
    con.Close()
End Sub

我知道问题出在我的 sql 请求中,谢谢。

【问题讨论】:

  • 查看您的查询。你的连接谓词有这个“其中 x = y = z”这没有意义。您应该让它加入 table1.value = table2.value 并使用 where 子句过滤行。您还应该考虑参数化查询,而不是直接执行用户输入。
  • 我也试过这个 cmd.CommandText = "select NomPatient from Patient INNER JOIN rdvs on Patient.NumPatient = rdvs.num_pat where rdvs.num_pat = '" & Combonumrdv.SelectedValue & "'"
  • 没有。您不会将该值放在连接谓词中。你把它放在 where 子句中。

标签: sql .net sql-server vb.net jointable


【解决方案1】:

我想你是想得到这个

选择 NomPatient
来自患者 INNER JOIN rdvs on Patient.NumPatient = rdvs.num_pat
WHERE rdvs.num_pat = '" & Combonumrdv.SelectedValue & "'

您将根据外键加入两个表并根据组合的内容进行过滤。

在任何情况下,如果场景只是您所描述的场景,则无需连接两个表,但可以使用得到相同的结果

选择 NomPatient
来自患者
WHERE NumPatient = '" &Combonumrdv.SelectedValue & "'

【讨论】:

  • 当然我们不知道 NomPatient 来自哪个表。另外,对OP。您确实需要参数化该查询。 bobby-tables.com/php.html
  • 我从问题的开头得到了关于表格的信息:)。关于参数化你是对的,我只是在复制和粘贴后更正 sql,我不是 vb.net 专家,只能假设含义。此外,作为个人喜好,我更愿意使用不同的方法,而不是在 UI 代码隐藏中编写直接选择。
  • 同意 100% 在后面的代码中不进行数据检索。当表定义都以这种格式布置时,我很少费心去解析它们。 :)
  • 我只是一个新人,试图正确理解和做事,我什至读到了小行:)
猜你喜欢
  • 2023-03-29
  • 2017-09-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-05
  • 2021-12-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多