我的查询遇到问题。
我有一个 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()
数据网格
错误
最佳答案
您似乎遇到了一些问题
首先你有两次
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/