Hola SadlyMistaken:
Lo que quieres hacer se puede obtener utilizando la función GROUP_CONCAT y utilizando subconsultas, así:
Código MySQL:
Ver originalQuery OK, 0 rows affected (0.08 sec)
-> (2,'maria','ballet','miercoles'),
-> (3,'manuel','plastica','viernes'),
-> (4,'jesus','futbol','lunes'),
-> (5,'rocio','ballet','lunes'),
-> (6,'laura','karate','miercoles'),
-> (7,'sergio','plastica','viernes'),
-> (8,'jorge','futbol','lunes');
Query OK, 8 rows affected (0.05 sec)
+------+--------+-----------+------------+
| id | nombre | actividad | dia_semana |
+------+--------+-----------+------------+
| 1 | jose | karate | lunes |
| 2 | maria | ballet | miercoles |
| 3 | manuel | plastica | viernes |
| 4 | jesus | futbol | lunes |
| 5 | rocio | ballet | lunes |
| 6 | laura | karate | miercoles |
| 7 | sergio | plastica | viernes |
| 8 | jorge | futbol | lunes |
+------+--------+-----------+------------+
-> where T2.actividad
= T1.actividad
-> and T2.dia_semana
= 'lunes'), '') Lunes
, -> where T2.actividad
= T1.actividad
-> and T2.dia_semana
= 'miercoles'), '') Miercoles
, -> where T2.actividad
= T1.actividad
-> and T2.dia_semana
= 'viernes'), '') Viernes
+-----------+-------------+-----------+---------------+
| actividad | Lunes | Miercoles | Viernes |
+-----------+-------------+-----------+---------------+
| karate | jose | laura | |
| ballet | rocio | maria | |
| plastica | | | manuel,sergio |
| futbol | jesus,jorge | | |
+-----------+-------------+-----------+---------------+
Hasta donde recuerdo MySQL no implementa tablas PIVOT, como SQL Server u Oracle (igual y estoy equivocado), sería cuestión de que investigaras algo más acerca de este tema.
Checa esta liga:
http://www.artfulsoftware.com/infotree/queries.php#78
Saludos
Leo.