En pocas palabras, ¿cómo puedo hacer esta consulta usando Sequel?Secuela: Cómo usar el grupo y contar
select a.id, count(t.id)
from albums a
right join tracks t on t.album_id = a.id
group by a.id
En pocas palabras, ¿cómo puedo hacer esta consulta usando Sequel?Secuela: Cómo usar el grupo y contar
select a.id, count(t.id)
from albums a
right join tracks t on t.album_id = a.id
group by a.id
Su problema es que la combinación de la izquierda encuentra una ID de pista para cada ID de álbum. Soluciones:
right join
subconsulta de sumas, suponiendo que soporta secuela: left join (select album_id, count(album_id) as count from tracks group by album_id) t on
un estrecho hasta from albums a, tracks t where t.album_id=a.id
en lugar de la unión.
DB[:albums___a].
right_join(:tracks___t, :album_id=>:id).
select_group(:a__id).
select_more{count(:t__id)}
Tienes razón sobre la combinación correcta, pero estaba hablando del marco Ruby de Sequel, no del SQL simple. ¡Gracias de cualquier manera! – RooSoft
He editado la pregunta para reemplazar la unión interna por una unión a la derecha. – RooSoft
* facepalm * ... no estoy seguro entonces. – zebediah49