获取具有某些特定条件的行

时间:2019-03-24 09:54:54

标签: c# sql

我有2张桌子

表1详细列出了表2中的分配进度

表1.分配

ID | Class | Content | StudentID | LastReviewDate
..............
3133        GC      ABCD        1059     4/6/2018 17:35

表2。详细信息

MondayOfWeekDate这里是星期几开始

AssignmentID | MondayOfWeekDate | Percent | StudentID | LastReviewDate
3133          3/19/2018          0        1059      3/23/2018 17:20
3133          4/2/2018          100       1689      4/7/2018 10:35
..............

我试图编写SQL来表明2018年3月26日至2018年1月4日之间显示那周的作业3133,但失败了

SELECT Assignment.* FROM Assignment,Detail
WHERE Assignment.Class = 'GC'
AND Assignment.ID=Detail.AssignmentID
AND Detail.MondayOfWeekDate >'2018/03/26'
AND Percent<100

当然结果什么都没有,但是我找不到正确的代码来执行

请问我如何编写SQL以正确显示该信息?非常感谢。

3 个答案:

答案 0 :(得分:0)

SELECT Assignment.* FROM Assignment,Detail
WHERE Assignment.Class = 'GC'
AND Assignment.ID=Detail.AssignmentID
AND Detail.MondayOfWeekDate BETWEEN '2018-03-26' and  '2018-04-01'
AND Percent<100

您将不会获得任何结果,因为在3/26/2018至4/1/2018之间没有任何东西?

您犯的唯一错误是您的日期,该日期应在之间使用,最好使用iso格式的日期yyyy-MM-dd

答案 1 :(得分:0)

我无法直接说出为什么您什么都看不到。但是我可以建议如何编写一个更具可读性和可维护性的查询。 可能可以解决您的问题,但我不知道。

一些简单的准则:

  • 切勿在{{1​​}}子句中使用逗号。
  • 始终使用正确,明确的标准 FROM语法。
  • 使用表别名。
  • 使用标准日期格式。

因此,从这样的查询开始:

JOIN

还可以在运行查询时检查语法错误。容易犯一些导致查询无法运行的小错误。

答案 2 :(得分:0)

您的查询因行而失败

3133          4/2/2018          100       1689      4/7/2018 10:35

是大于>'2018/03/26'的那个,但其百分比不是<100,而是100。 您到底在找什么?