gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 14:32:11 26 4
gpt4 key购买 nike

我在一张 table 上工作,记录学生参加类(class)的记录。数据使用学生证号码、类(class) ID、类(class)名称、开始日期、结束日期保存。学生可以选修一门以上的类(class),因此会有重复的学生识别号,但类(class) ID、类(class)名称、开始日期和结束日期不同。我在这里尝试的是使用 DATEDIFF 根据天数选择学生。

抱歉没有正确解释我的问题。我正在谈论的表的结构:

studcourse1(internalstudentid, staffnoic, courseid, coursenm, StDt, EndDt, location, organizer, generalcategorycd, generalsubcategorycd, eid)

staffnoic - 员工识别号,StDt - 开始日期。EndDt - 结束日期

我已经检查过,该表上没有主键或索引,因为它不是基表而是 View 。

抱歉,如果之前的声明太长。让我们用它来代替。

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

上面的语句使用 (DATEDIFF(EndDt, StDt) + 1) 获取学习类(class)超过 90 天的学生的结果(使用表 tblStaff 和表 StudCourse1 中的 Staffnoic)。真正让我困惑的是,例如来自studcourse1的一条记录,staffnoic为“111111111111”,示例数据:

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)

运行 SQL 语句将选择 StDt 为 2010-01-01 00:00:00 且 EndDt 为 2010-12-31 00:00:00 的一条。为什么它会单独列出该记录而不是其他记录,因为它们都属于 AND St​​Dt >= '2009-1-1' AND YEAR(EndDt) <= YEAR(NOW())"。现在指的是 2012 年. 如何让它选择带有 StDt(2009-02-09) 和 EndDt(2012-02-09) 的那个?

还有“(DATEDIFF( EndDt, StDt ) +1) > 90”,为什么要加1? DATEDIFF( EndDt, StDt ) > 90 不是正确的吗?

抱歉,问题太多了。最近刚学MySQL。感谢您抽出时间。

最佳答案

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

完成此任务的最简单方法是使用 3 个表,1)学生的学号、姓名等2) 类(class)-类(class)ID、类(class)名称等。3) 注册 - 注册 ID、开始日期、结束日期和外键(学生 ID 和类(class) ID)。

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

关于mysql - 了解MySQL如何获取具有相同用户id的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9801315/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com