Unir consultas correctamente – SQL
Tengo dos tablas llamadas Libros
y Coautor
. Me gustaría unirlos para obtener la tabla que se muestra en “Resultado deseado”. Soy nuevo en SQL y estoy luchando para unir dos consultas que hice…
Libros:
ISBN | título | autor |
---|---|---|
1111 | Libro1 | autor1 |
2222 | Libro2 | autor2 |
3333 | Libro3 | |
4444 | Libro4 | autor3 |
Coautor:
id | autor | libro(isbn) |
---|---|---|
1 | autorx | 4444 |
2 | autory | 1111 |
3 | autorz | 2222 |
4 | autorw | 4444 |
Resultado deseado:
título | tieneautor | cantidadcoautor |
---|---|---|
Libro1 | 1 | 1 |
Libro2 | 1 | 1 |
Libro3 | 0 | 0 |
Libro4 | 1 | 2 |
Tengo las siguientes consultas:
SELECT b.título, count(c.libro)
FROM Libros b
LEFT JOIN Coautor c ON b.isbn = c.libro
GROUP BY b.título
que devuelve la columna cantidad_coautor
.
Y otra consulta para la columna tiene_autor
:
SELECT
b.título,
CASE
WHEN b.autor IS NULL
THEN 0
ELSE 1
END AS 'Tiene autor'
FROM Libros b
¿Cómo los combino?
davy.ai
Puede combinar las dos consultas utilizando una subconsulta. La subconsulta selecciona el título y el recuento de las tablas de Libros y Coautores, y la consulta externa se une a esta subconsulta con la tabla de Libros para agregar la columna “tiene_autor”:
Esto le dará la tabla de resultados deseada con las tres columnas: título, tiene_autor y count_co_author.