SQL desde cero · lección 6 de 6

Los que faltan: LEFT JOIN e IS NULL

Encontrar a quien no tiene pareja en la otra tabla: sospechosos sin robos, robos sin sospechoso y contar ceros.

LEFT JOIN conserva todas las filas de la tabla de la izquierda, aunque no tengan pareja. Donde no la hay, las columnas de la otra tabla salen en NULL.

NULL no es cero ni texto vacío: significa «no hay dato». No se compara con =, sino con IS NULL o IS NOT NULL.

Juntando las dos ideas sale la consulta más útil de este tema: un LEFT JOIN y un WHERE … IS NULL te da las filas que no tienen pareja. Y al contar, COUNT(r.id) ignora los NULL, mientras que COUNT(*) cuenta la fila igual.

Las tablas

sospechosos

idnombreedadciudadoficio
1Lucía Prado34Bahía Lumenfotógrafa
2Joel Ibarra52Puerto Salcerrajero
3Marta Solís27Bahía Lumenenfermera
4Iker Vela41San Cirotaxista
5Rocío Andrade63Puerto Saljoyera
6Damián Cuevas19San Cirorepartidor
7Elena Ruiz46Bahía Lumencontadora
8Bruno Paz38Puerto Salmecánico

robos

idsospechoso_idciudadbotin
12Puerto Sal1200
22Puerto Sal800
34San Ciro300
45Puerto Sal5000
58Puerto Sal450
68Bahía Lumen950
78San Ciro150
81Bahía Lumen2200
9NULLBahía Lumen700

Puedes escribir aquí mismo: cada ejercicio se ejecuta con DuckDB en tu navegador, sin instalar nada. Con el teclado: Ctrl + Enter.

1. Todos, tengan o no robos

El nombre de cada sospechoso y el botín de sus robos, incluyendo a quienes no tienen ninguno.

2. Los que no robaron

Sólo el nombre de los sospechosos sin ningún robo.

3. Contar ceros

El nombre de cada sospechoso y cuántos robos tiene, con 0 para quien no tiene ninguno.

4. El robo sin dueño

Todas las columnas de los robos sin sospechoso conocido, partiendo de un LEFT JOIN.