Cada caso es una clase de unos 50 minutos. Los alumnos solo necesitan un navegador: no hay cuentas, ni
instalaciones, ni forma de estropear los datos.
Carrera de la clase · prototipo
Una pantalla para proyectar mientras la clase juega: cada alumno es un personaje que avanza por las
escenas del caso, con un sello para quien resuelve antes cada escena y un podio al final. No se
proyectan pistas ni fallos. Por ahora funciona en modo demostración, con una clase simulada; el juego
individual no cambia.
0–5 min Presenta el caso y pide que cada alumno escriba su nombre de detective.
5–40 min Juegan las escenas en orden. Cada una enseña un concepto en la pestaña HERRAMIENTA.
40–45 min Quien termine antes puede hacer el reto extra.
45–50 min Puesta en común: ¿qué trampas habéis encontrado? Captura del certificado.
Las respuestas no distinguen mayúsculas ni tildes. Cada alumno tiene tres pistas por escena; la
tercera es la solución y solo baja el rango del certificado, así que nadie se queda atascado.
NIVEL 1 · 50 MIN · SELECT · WHERE · ORDER BY · LIMIT · LIKE · JOIN · GROUP BY · HAVING · BETWEEN
La Perla de Niebla
Caso de iniciación para una clase de 50 minutos. Cada escena introduce un concepto: SELECT y WHERE, ORDER BY y LIMIT, LIKE, JOIN y varios JOIN encadenados. El reto extra añade GROUP BY, COUNT, HAVING y BETWEEN.
¿Cuál es el nombre completo de la segunda testigo?
marta montero
4 · CAFÉ EL ANCLA
JOIN · unir tablas
¿Por qué letra y número empieza el carné de socio del sospechoso?
g7
5 · CLUB DE REMO
Varios JOIN · investigar paso a paso
¿Quién robó la Perla de Niebla?
bruno salvat
★ EXTRA
COUNT · GROUP BY · HAVING
¿Quién es el cerebro del robo?
veronica llull
Trampas pensadas para aprender
Escena 1: el mismo día hay robos en otras ciudades y otros sucesos en Puerto Niebla; hacen falta las tres condiciones.
Escena 2: Rubén Cano vive en el 97; sin ORDER BY … DESC es fácil quedarse con él o con cualquier vecino.
Escena 3: hay tres Martas en la ciudad; solo una vive en la Avenida Marina.
Escena 5: hay tres socios oro G7, dos estuvieron en el club el 9 de marzo y tres matrículas contienen PN7. Solo Bruno cumple todo.
Reto extra: tres pelirrojas con Tesla Model S; solo una fue exactamente tres veces al festival en marzo.
Soluciones (no las enseñes a los alumnos 😉)
1 · COMISARÍA
SELECT * FROM informes
WHERE fecha = '2026-03-14' AND tipo = 'robo' AND ciudad = 'Puerto Niebla';
2 · CALLE DEL FARO
SELECT * FROM personas
WHERE calle = 'Calle del Faro'
ORDER BY numero DESC
LIMIT 1;
3 · AVENIDA MARINA
SELECT * FROM personas
WHERE nombre LIKE 'Marta%' AND calle = 'Avenida Marina';
4 · CAFÉ EL ANCLA
SELECT p.nombre, e.transcripcion
FROM entrevistas e
JOIN personas p ON p.id = e.persona_id
WHERE p.nombre IN ('Tomás Ferrer', 'Marta Montero');
5 · CLUB DE REMO
SELECT p.nombre, s.id, l.matricula
FROM socios_club s
JOIN entradas_club e ON e.socio_id = s.id
JOIN personas p ON p.id = s.persona_id
JOIN licencias l ON l.id = p.licencia_id
WHERE s.id LIKE 'G7%' AND s.tipo = 'oro'
AND e.fecha = '2026-03-09'
AND l.matricula LIKE '%PN7%';
★ EXTRA
SELECT p.nombre, COUNT(*) AS veces
FROM licencias l
JOIN personas p ON p.licencia_id = l.id
JOIN eventos ev ON ev.persona_id = p.id
WHERE l.color_pelo = 'pelirrojo' AND l.genero = 'mujer'
AND l.altura BETWEEN 165 AND 170
AND l.marca = 'Tesla' AND l.modelo = 'Model S'
AND ev.evento = 'Festival de Jazz del Puerto'
AND ev.fecha LIKE '2026-03%'
GROUP BY p.id
HAVING COUNT(*) = 3;
NIVEL 2 · 50 MIN · Fechas y horas · BETWEEN · JOIN
Veneno en el Expreso Nocturno
Caso de nivel 2 para una clase de 50 minutos. Introduce las fechas y horas como texto comparable, BETWEEN con franjas que cruzan la medianoche, los JOIN de tres tablas y unir la misma tabla dos veces con apodos. La escena 4 tiene un testigo que miente.
¿Qué fue lo último que tomó Aurelio antes de encontrarse mal?
te con limon
3 · COCHE CAMA
Tres tablas y una franja
¿Cuántos pasajeros no estaban en su compartimento entre las 00:20 y las 00:35?
3
4 · ANDÉN
Contrastar declaraciones
¿Quién miente en su declaración?
gloria saez
5 · COMISARÍA
Una tabla, dos papeles
¿Quién compró el billete de Gloria Sáez?
veronica llull
Trampas pensadas para aprender
Escena 1: Aurelio Castells tiene otro billete de marzo y hay otro «Aurelio» en el mismo tren; hace falta el nombre completo y la fecha.
Escena 2: la noche cruza las doce; si se filtra solo por la hora o solo por el día 17, falta el té de las 00:35. Aurelio tiene consumos de otro viaje.
Escena 3: hay ausencias en la misma franja otras noches y una ronda a las 23:40 con gente cenando; solo tres personas faltan entre las 00:20 y las 00:35 del 18.
Escena 4: Gloria Sáez dice que no salió de su compartimento, pero la revisora la apuntó ausente y la caja registra su agua con gas a las 00:27. Ramiro dice la verdad.
Escena 5: Gloria tiene tres billetes; solo el del 17 de abril lo pagó otra persona.
Soluciones (no las enseñes a los alumnos 😉)
1 · ESTACIÓN
SELECT b.fecha, b.tren, b.coche, b.plaza
FROM billetes b
JOIN pasajeros p ON p.id = b.pasajero_id
WHERE p.nombre = 'Aurelio Castells' AND b.fecha = '2026-04-17';
2 · RESTAURANTE
SELECT c.hora, c.producto
FROM consumos c
JOIN billetes b ON b.id = c.billete_id
JOIN pasajeros p ON p.id = b.pasajero_id
WHERE p.nombre = 'Aurelio Castells'
AND c.hora BETWEEN '2026-04-17 22:00' AND '2026-04-18 06:30'
ORDER BY c.hora;
3 · COCHE CAMA
SELECT p.nombre, b.coche, b.plaza, c.hora
FROM controles c
JOIN billetes b ON b.id = c.billete_id
JOIN pasajeros p ON p.id = b.pasajero_id
WHERE c.estado = 'ausente'
AND c.hora BETWEEN '2026-04-18 00:20' AND '2026-04-18 00:35';
4 · ANDÉN
SELECT p.nombre, c.hora, c.producto
FROM consumos c
JOIN billetes b ON b.id = c.billete_id
JOIN pasajeros p ON p.id = b.pasajero_id
WHERE p.nombre IN ('Gloria Sáez', 'Ramiro Ortega')
AND c.hora BETWEEN '2026-04-17 22:00' AND '2026-04-18 06:30'
ORDER BY c.hora;
5 · COMISARÍA
SELECT v.nombre AS viajera, c.nombre AS compradora, b.comprado
FROM billetes b
JOIN pasajeros v ON v.id = b.pasajero_id
JOIN pasajeros c ON c.id = b.comprador_id
WHERE v.nombre = 'Gloria Sáez' AND b.fecha = '2026-04-17';
Próximamente
La desaparición del Festival · nivel 2 · LEFT JOIN, IS NULL
El hacker del instituto · nivel 3 · GROUP BY, HAVING, COUNT DISTINCT, LOWER y TRIM
La galería de las falsificaciones · nivel 4 · Subconsultas, AVG
El golpe al Banco de Puerto Niebla · nivel 5 · Funciones de ventana, WITH (CTE)