Eu tenho um banco de dados com 3 tabelas classes
: teacher
e 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.