了解MySQL如何获取具有相同用户id的数据

了解MySQL如何获取具有相同用户id的数据,mysql,sql,join,subquery,correlated-subquery,Mysql,Sql,Join,Subquery,Correlated Subquery,我在一张记录学生上课情况的桌子上工作。使用学生识别号、课程id、课程名称、开始日期、结束日期保存数据。学生可以参加多个课程,因此有重复的学生识别号,但课程id、课程名称、开始日期和结束日期不同。我在这里尝试的是根据使用DATEDIFF的天数来选择学生 对不起,没有正确地解释我的问题。我所说的表的结构: studcourse1(internalstudentid, staffnoic, courseid, coursenm, StDt, EndDt, location, organizer, ge

我在一张记录学生上课情况的桌子上工作。使用学生识别号、课程id、课程名称、开始日期、结束日期保存数据。学生可以参加多个课程,因此有重复的学生识别号,但课程id、课程名称、开始日期和结束日期不同。我在这里尝试的是根据使用DATEDIFF的天数来选择学生

对不起,没有正确地解释我的问题。我所说的表的结构:

studcourse1(internalstudentid, staffnoic, courseid, coursenm, StDt, EndDt, location, organizer, generalcategorycd, generalsubcategorycd, eid)
staffnoic-员工识别号, StDt-开始日期。 EndDt-结束日期

我已经检查过了,这个表上没有主键或索引,因为它不是一个基,而是一个视图

抱歉,如果上一条语句太长。让我们用这个来代替

SELECT GradeGroupCd, StudCourse1.StaffNoIC, (DATEDIFF( EndDt, StDt ) +1) TotalDay, StDt, EndDt
          FROM StudCourse1, tblStaff, tblRefTitleGred
          WHERE tblStaff.TitleGredCd = tblRefTitleGred.TitleGredCd
          AND StudCourse1.StaffNoIC = tblStaff.StaffNoIC
          AND StDt >= '2009-1-1' AND YEAR(EndDt) <= YEAR(NOW())
          AND (DATEDIFF( EndDt, StDt ) +1) > 90
          AND (GeneralSubCategoryCd = 'S0012' OR GeneralSubCategoryCd = 'S0014')
          GROUP BY GradeGroupCd, StudCourse1.StaffNoIC
运行SQL语句将选择StDt为2010-01-01 00:00:00和EndDt为2010-12-31 00:00:00的语句。为什么它要挑出那个记录而不是其他记录,因为它们都属于“2009-1-1”和“年份(EndDt)90”,为什么它要在它上面加1?DATEDIFF(EndDt,StDt)>90不是正确的吗


如果问题太多,很抱歉。请最近学习MySQL。谢谢您的时间。

好的,很难理解您所写的内容。请提供您使用的表和结构

完成这项工作的最简单方法是使用3个表, 1) 具有学生id、姓名等的学生 2) 课程-课程id、课程名称等。 3) 注册-注册id、开始日期、结束日期和外键(学生id和课程id)


我不明白你的意思(我在这里试图根据使用DATEDIFF的天数来选择学生。)

请将表格结构发布为CREATE table语句。一些示例输入数据也会很好。谢谢!是的,表格结构+可能是您试图实现的内容的文本描述+基于示例数据的示例结果将非常有用。可能只是我,但我甚至找不到“学生识别号”“在查询中。首先,您可以将隐式联接转换为显式联接,并读取and
studcourse1(internalstudentid, staffnoic, courseid, coursenm, StDt, EndDt, location, organizer, generalcategorycd, generalsubcategorycd, eid)
studcourse1(10629,111111111111,AAA1811,Course1,2010-01-01 00:00:00, 2010-12-31 00:00:00, '', ABC Org, G003, S0012, E00001812)
       (30684,111111111111,AAA6968,Course2,2009-02-10 00:00:00, 2012-02-09 00:00:00, '', ABC Org, G003, S0012, E00006894)
       (30685,111111111111,AAA6970,Course3,2011-01-01 00:00:00, 2012-02-09 00:00:00, '', ABC Org, G003, S0014, E00006896)