Hola CapLurker,
Una posible opción es como se muestra abajo, sin embargo, es importante mencionar que esa consulta no es escalable, con pocos datos no tendrás problema pero al incrementar los datos el rendimiento disminuirá. Discutir en clase alternativas para optimizar/mejorar la consulta con grandes cantidades de datos.
Código MySQL:
Ver original/*Table structure for table `horario` */
/*Data for the table `horario` */
('0001','2011-01-01','08:02:56'),('0002','2011-01-01','08:03:00'),
('0001','2011-01-01','14:02:00'),('0002','2011-01-01','14:03:51'),
('0001','2011-01-01','15:36:12'),('0002','2011-01-01','15:31:23'),
('0001','2011-01-01','17:12:15'),('0002','2011-01-01','17:11:21');
h.fecha,
h.usuario,
min(hem.hora
) as 'entrada mañana', max(hsm.hora
) as 'salida mañana', min(het.hora
) as 'entrada tarde', max(hst.hora
) as 'salida tarde'