Select count con union de tres tablas? MySQL

Publicado por Isams
hace 7 años

Hola! Tengo las siguientes tres tablas con información sobre publicaciones:

  • likes
  • comentarios
  • visitas

Cada una de estas tablas tiene un columna publicacion_id que es una clave hacia la tabla publicaciones. Lo que necesito es crear una vista que contenga el id de la publicación, la cantidad de visitas que tuvo esa publicación, la cantidad de comentarios y la cantidad de likes.. Intenté algo como esto:

select * from (
select id, count(id) as comentarios from publicaciones
left join comentarios on id = publicacion_id
group by id
UNION
select id, count(id) as visitas from publicaciones
left join visitas on id = publicacion_id
group by id
UNION
select id, count(id) as likes from publicaciones
left join likes on id = publicacion_id
group by id
) conteos group by conteos.id;

Pero esto no me funciona, me genera un resultado como el siguiente

id comentarios
1 44
1 98
3 77

Y yo quiero algo como esto:

id comentarios likes visitas
1 44 100 150

Saludos

sql mysql