SQL
Test de SQL: JOIN y relaciones
Resuelve 50 casos de PostgreSQL sobre INNER, LEFT, RIGHT, FULL y CROSS JOIN, cardinalidad y relaciones entre tablas.
Cada intento mezcla preguntas y respuestas para evitar patrones memorizables.
Cargando preguntas…
Qué vas a practicar
Este banco convierte las uniones en problemas de datos: combinar clientes y pedidos, conservar filas sin correspondencia, detectar productos cartesianos, elegir claves de relación y anticipar la cardinalidad. Los ejercicios priorizan la interpretación del resultado.
- Predecir qué filas conserva cada tipo de JOIN.
- Diseñar condiciones ON con claves simples y compuestas.
- Detectar productos cartesianos y multiplicaciones inesperadas.
- Resolver relaciones opcionales, muchos-a-muchos y uniones sobre la misma tabla.
Preguntas de ejemplo
Los ejemplos siguientes pertenecen al banco interactivo y conservan exactamente la misma respuesta y explicación.
1Una consulta combina clientes y pedidos y solo debe devolver parejas que cumplan la condición de unión. ¿Qué tipo de JOIN corresponde?
Respuesta: Solo combinaciones que cumplen la condición de unión
Explicación: INNER JOIN conserva únicamente pares de filas para los que la condición ON resulta verdadera. Las filas sin pareja se descartan de ambos lados; para conservarlas se necesita una unión externa.
2Al usar SELECT * con una columna id común, USING (id) cambia la salida respecto a ON a.id = b.id. ¿Qué diferencia visible aparece?
Respuesta: USING muestra una sola columna id de unión
Explicación: USING suprime la duplicación de las columnas homónimas enumeradas en su lista. Si los nombres difieren o se necesita una condición más compleja, debe utilizarse ON.
3En una condición normal de JOIN se evalúa NULL = NULL. ¿Cómo se comporta esa comparación?
Respuesta: El resultado es UNKNOWN y no se considera coincidencia
Explicación: La igualdad ordinaria no trata dos valores desconocidos como iguales. Una igualdad con NULL no resulta true, por lo que dos valores nulos no se emparejan mediante =.
4La condición ON es siempre verdadera. ¿Qué efecto tiene eso sobre las combinaciones de filas?
Respuesta: La unión produce un producto cartesiano
Explicación: Cada fila de un lado satisface la condición con cada fila del otro. Comparar las claves correctas evita asociaciones accidentales entre atributos que solo comparten nombre o tipo.
5¿Qué condición adicional evita obtener tanto la pareja A-B como B-A?
Respuesta: e1.id < e2.id
Explicación: Imponer un orden estricto conserva una sola orientación de cada pareja no dirigida. La condición debe relacionar las columnas de los dos alias; sin ella se produciría un producto cartesiano de la tabla consigo misma.
6¿Qué efecto tiene colocar una condición sobre la tabla izquierda dentro de ON de un LEFT JOIN?
Respuesta: Limita las coincidencias, pero no elimina por sí sola las filas izquierdas preservadas
Explicación: En una unión externa, ON decide qué parejas coinciden; las filas del lado preservado pueden seguir apareciendo con NULL a la derecha. En una unión externa, ON decide las coincidencias sin eliminar la fila preservada; WHERE filtra el resultado ya combinado.
Cómo aprovechar la práctica
Identifica qué tabla debe conservar todas sus filas, qué condición relaciona las claves y cuántas coincidencias puede aportar cada lado. Distingue después las filas emparejadas de las completadas con NULL.
Fuentes y alcance
Las preguntas se han contrastado con la documentación oficial vigente de PostgreSQL 18.4 sobre expresiones de tabla y uniones. Revisión técnica: 21 de agosto de 2026.