Tengo una base de datos con 3 tablas classes
: teacher
y 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.