Reto SQL. ¿Sabrás resolverlo?
Monday, October 24th, 2005Quiero plantear un problema SQL:
Dadas las tablas que se detallan a continuación realizar una consulta (SELECT) que muestre los datos de cada factura (una sóla vez) entre dos fechas determinadas para las facturas que son del tipo pg=1, indicando el nombre del alumno y del curso al que pertenece. En el tipo de facturas pg=1 sólo hay libros pertenecientes al mismo curso. La salida debe presentarse ordenada por curso y numero de factura.
| libro | d_factura | c_factura | alumno | curso |
| id titulo id_curso |
id_factura linea id_libro cantidad precio … |
id fecha id_alumno importe pg … |
id apellidos nombre … |
id nombre … |
¿Se puede hacer? Espero vuestras respuestas en los comentarios y en caso de que no se pueda hacer explicad los motivos.
Actualización:
Por favor, enviad las soluciones con los nombres de tabla y columna en minúsculas para poder probarla.
El viernes pondré la solución a la que he llegado yo.
Actualización (30.10.2005):
Esta es la solución a la que llegué yo:
SELECT DISTINCT c_factura.id, c_factura.numero, c_factura.fecha, c_factura.id_alumno, c_factura.importe, c_factura.pg, concat( alumno.nombre, ‘ ‘, alumno.apellidos ), libro.id_curso, curso.nombre FROM libro
INNER JOIN d_factura ON d_factura.id_libro = libro.id
INNER JOIN c_factura ON d_factura.id_factura = c_factura.id
INNER JOIN alumno ON c_factura.id_alumno = alumno.id
INNER JOIN curso ON libro.id_curso = curso.id
WHERE ( c_factura.fecha >= 20050906 AND c_factura.fecha AND c_factura.pg = 1
ORDER BY libro.id_curso, c_factura.id