Seleccionar distinto de después de cierta fecha

Seleccionar distinto de después de cierta fecha

Tengo una base de datos con 3 tablas classes: teachery taught:

clases

  • ID (número de clase)
  • título (tipo de clases)
  • costo (clasesCosto)

maestro

  • int único (númprofesor)

enseñó

  • classNum (clave externa)
  • TeacherNum (clave externa)
  • campo de fecha (fecha de clase)

Necesito escribir una consulta en SQL que devolverá una lista de clases únicas que se impartieron desde el 6 de agosto de 2015, ordenadas del más caro al menos costoso.

¿Usaría distinto para esto? Para obtener todos los resultados únicos o aprovechar las claves externas.

¿esto funcionara?

Respuesta1

Sí, algo como:

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

Respuesta2

He usado la siguiente construcción...

CAST(PISO(CAST(@fecha como FLOAT)) como FechaHora);

esto elimina la hora de la fecha convirtiéndola en flotante y truncando la parte "hora", que es el decimal del flotante.

Parece un poco torpe pero funciona bien en un conjunto de datos grande (~100.000 filas) que uso repetidamente a lo largo del día.

información relacionada