es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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?

Tags:  , ,

Answer

  1. Avatar for 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”:

    SELECT b.title, 
           CASE 
                WHEN b.author IS NULL 
                    THEN 0 
                    ELSE 1 
           END AS 'Tiene autor',
           co.count_co_author
    FROM Books b
    LEFT JOIN (SELECT book, COUNT(*) AS count_co_author FROM Coauthor GROUP BY book) co ON b.isbn = co.book
    

    Esto le dará la tabla de resultados deseada con las tres columnas: título, tiene_autor y count_co_author.

Comments are closed.