Selecione distinto de após determinada data

Selecione distinto de após determinada data

Eu tenho um banco de dados com 3 tabelas classes: teachere taught:

Aulas

  • ID (classNum)
  • título (classesType)
  • custo (classesCost)

professor

  • int único (professorNum)

ensinado

  • classNum (chave estrangeira)
  • teacherNum (chave estrangeira)
  • campo de data (classdate)

Preciso escrever uma consulta em SQL que retornará uma lista de aulas exclusivas que foram ministradas desde 6 de agosto de 2015, classificadas da mais cara para a menos cara

Eu usaria distinto para isso? Para obter todos os resultados exclusivos ou aproveitar as chaves estrangeiras.

Isso vai funcionar?

Responder1

Sim, algo como:

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

Responder2

Eu usei a seguinte construção ...

CAST(FLOOR(CAST(@data como FLOAT)) como DateTime);

isso remove a hora da data, convertendo-a em um ponto flutuante e truncando a parte "hora", que é o decimal do ponto flutuante.

Parece um pouco desajeitado, mas funciona bem em um conjunto de dados grande (cerca de 100.000 linhas) que uso repetidamente ao longo do dia.

informação relacionada