-1

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

классы

  • ID (classNum)
  • title (classesType)
  • стоимость (classesCost)

учитель

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

учил

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

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

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

это будет работать?

2 ответа2

1

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

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

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

CAST(FLOOR(CAST(@date как FLOAT)) как DateTime);

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .