Mysql查询多个有关系的表中的2个日期

标签 mysql vb.net

我的查询遇到问题。

我有一个 GridView ,可以根据所在部分统计所有患有特定疾病的学生。我想要的是在 2 个日期之间进行过滤,因为我有多个表。

Dim query As String

query = "SELECT count(student_id) as i from students, patient, ailment 
         WHERE students.sid=patient.student_id AND 
         patient.ailment_id=ailment.ailment_id and section WHERE 
         patient.date_created BETWEEN @d1 AND @d2"

Dim data_table As New DataTable
sql_command = New MySqlCommand(query, myconnection.open())

sql_command.Parameters.Add("@d1", MySqlDbType.DateTime).Value = 
            dateStart.Value
sql_command.Parameters.Add("@d2", MySqlDbType.DateTime).Value = 
            dateEnd.Value

Dim adapter As New MySqlDataAdapter(sql_command)

adapter.Fill(data_table)
DataGridView1.DataSource = data_table

myconnection.close()

数据网格

link for datagrid sample

错误

link to query error

最佳答案

您似乎遇到了一些问题
首先你有两次

            SELECT count(student_id) as i 
            from students, patient, ailment 
            WHERE students.sid=patient.student_id 
            AND patient.ailment_id=ailment.ailment_id 
            AND patient.date_created BETWEEN @d1 AND @d2 

第二,您还有一个和部分不清楚..(检查您的真实情况并最终更新您的代码)

无论如何,您应该使用明确的显式 JOIN 语法,而不是基于位置的旧且不清楚的隐式版本

SELECT count(student_id) as i 
from students
INNER JOIN patient ON students.sid=patient.student_id 
INNER JOIN ailment ON atient.ailment_id=ailment.ailment_id 
WHERE  patient.date_created BETWEEN @d1 AND @d2"

关于Mysql查询多个有关系的表中的2个日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54673504/

相关文章:

mysql - 如何级联删除多态表?

mysql - 如何在 sequelize 中执行事务和回滚?

vb.net - 在 VB.NET 控制台应用程序中更改目标框架

vb.net - Crystal Report SP26 SetDataSource() 方法在 Visual Studio 2019 中的客户端计算机中失败

mysql - 奇怪的行为 - 对于相同的 SQL,phpMyAdmin 和 VS 2017 中的结果不同

mysql - Joomla 3 中缺少的更新表

php - ADOdb 中的 SQL 注入(inject)和一般网站安全

php - 使用 php 在 mysql 中查找最后插入的 ID 的最佳方法

vb.net - 如何使用多重扩展来显示列表框项目以在标签中显示项目?

javascript - 努力处理从 jQuery 调用 vb.Net asmx Web 服务返回的数据