J'ai deux tables: une table de fichiers, qui inclut le type de fichier, et une table de propriétés de fichier, qui fait référence à la table de fichiers via une clé étrangère. Tableau des fichiers d'exemple:Sql: agrégation simultanée à partir de deux tables
| id | name | type |
---------------------
| 1 | file1 | zip |
| 2 | file2 | zip |
| 3 | file3 | zip |
| 4 | file4 | jpg |
Et la table Propriétés:
| file_id | property |
-----------------------
| 1 | x |
| 2 | x |
Je veux faire une requête, qui indique le nombre de chaque type de fichier, et combien de fichiers de ce type ont une propriété.
Ainsi, dans l'exemple, le résultat serait
| type | filecount | prop count |
----------------------------------
| zip | 3 | 2 |
| jpg | 1 | 0 |
je pourrais y arriver par
select f.type, (select count(id) from files where type = f.type), count(fp.id) from
files as f, file_properties as fp where f.id = fp.file_id group by f.type;
Mais cela semble très suboptimale et est très lent. Une meilleure façon de le faire?