Выбрать отличный от после определенной даты

Выбрать отличный от после определенной даты

У меня есть БД с 3 таблицами: classes, teacherи taught:

классы

  • ID (номер_класса)
  • название (классыТип)
  • стоимость (classesCost)

учитель

  • уникальный int (teacherNum)

учил

  • classNum (внешний ключ)
  • teacherNum (внешний ключ)
  • поле даты (classdate)

Мне нужно написать запрос на SQL, который вернет список уникальных классов, которые преподавались с 6 августа 2015 года, отсортированный от самых дорогих к самым недорогим.

Буду ли я использовать distinct для этого? Чтобы получить все уникальные результаты или использовать внешние ключи.

это сработает?

решение1

Да, что-то вроде:

SELECT DISTINCT * 
FROM classes
WHERE ID IN 
(SELECT classNum  FROM taught WHERE date = CONVERT(...,Aug 6 2015 ))
ORDER BY cost ASC

решение2

Я использовал следующую конструкцию...

CAST(FLOOR(CAST(@date as FLOAT)) as DateTime);

это удаляет время из даты, преобразуя ее в число с плавающей точкой и усекая часть «время», которая является десятичной частью числа с плавающей точкой.

Выглядит немного неуклюже, но отлично работает с большим набором данных (~100 000 строк), который я использую неоднократно в течение дня.

Связанный контент