Получить строку, которая имеет определенные условия - PullRequest
0 голосов
/ 24 марта 2019

У меня есть 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, чтобы указать, что в период с 26.03.2008 г. по 01.04.2008 г. было показано назначение 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 голосов
/ 24 марта 2019

Я не могу напрямую говорить, почему вы ничего не видите.Но я могу предложить, как написать более читаемый и обслуживаемый запрос.Это может исправить ваши проблемы, но я не знаю.

Некоторые простые рекомендации:

  • Никогда не используйте запятые в предложении FROM.
  • Всегда используйте правильный, явный, стандартный JOIN синтаксис.
  • Используйте псевдонимы таблиц.
  • Используйте стандартные форматы даты.

Итак, начните с запроса, подобного следующему:

SELECT a.*
FROM Assignment a JOIN
     Detail d
     ON a.ID = d.AssignmentID
WHERE a.Class = 'GC' AND
      d.MondayOfWeekDate > '2018-03-26' AND
      d.Percent < 100;

Также проверяйте синтаксические ошибки при выполнении запроса.Можно легко допустить небольшие ошибки, из-за которых запрос не запускается.

0 голосов
/ 25 марта 2019

Ваш запрос не выполнен, так как строка

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

Тот, который больше >'2018/03/26', но его процент не <100, а 100. Что именно вы ищете?

0 голосов
/ 24 марта 2019
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

Вы не получите никаких результатов, так как между 26.03.2008 г. и 01.04.2008 г. ничего нет ??лучшая идея использовать дату в формате ISO yyyy-MM-dd

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...