tipos outer joins sql join count

outer - Declaración de MySQL combinando un join y un conteo?



sql mysql (4)

Tengo una tabla de ''carpetas''. Quiero devolver todos los registros con el ID de usuario de 16.

SELECT * FROM `folders` WHERE userId = 16;

Tengo una tabla de ''archivos''. Para cada ''carpeta'' devuelta anteriormente, deseo devolver un recuento de ''archivos'' dentro de esa ''carpeta''.

SELECT COUNT(*) as "Files" FROM files WHERE Folder = n;

¿Cómo combino estos? Estoy perdido. ¡Gracias!


Haga una sub consulta que agrupe por carpetas para obtener el recuento por carpeta, luego únase a la primera consulta como esta:

select f.* fc.Files from Folders f -- -- Join the sub query with the counts by folder JOIN (select Folder, count(*) Files from files group by Folder ) as fc on ( fc.Folder = f.Folder ) where f.userid = 16


probablemente necesite usar GROUP BY y agruparlo por ID o tal:

SELECT folders.*, COUNT(files.*) as filetotal FROM folders LEFT JOIN files ON folders.ID=files.folderID WHERE userId = 16 GROUP BY folders.ID



select f.`folder`, f.`userId`, r.`count` from `folders` f left join ( select `Folder`, count(`id`) `count` from `files` group by `Folder` ) r on r.`Folder`=f.`folder` where `userId`=16



si no quieres usar el grupo por declaración.


Tuve un problema similar en una lista de productos donde quería contar la clasificación por estrellas de un producto en otra tabla [1-5] y la cantidad de usuarios que votaron por ese producto específico.