J'ai 2 tables fun (maître) et blk (esclave).groupe sqlite3 par
sqlite> select * from fun;
id mod_id name freq
---------- ---------- ----------- ----------
1 1 adpcm_coder 99108
2 1 adpcm_decod 0
Je veux compter combien de blk il y a pour le plaisir, donc j'utiliser « groupe par »:
sqlite> SELECT fun.*, count(blk.id) as no_blk FROM fun, blk WHERE fun.id=blk.fun_id GROUP BY (blk.fun_id);
id mod_id name freq no_blk
---------- ---------- ----------- ---------- ----------
1 1 adpcm_coder 99108 12
La 2ème ligne est rejetée depuis blks car il n'existe pas. Comment obtenir un résultat comme celui-ci?
id mod_id name freq no_blk
---------- ---------- ----------- ---------- ----------
1 1 adpcm_coder 99108 12
2 1 adpcm_decod 0 0
thx adam. Cela fonctionne très bien. Pourrait expliquer pourquoi je dois utiliser dans un groupe - par toutes les colonnes non agrégées? Est-ce parce que certains d'entre eux peuvent avoir des valeurs nulles? THX. – name
Cheers, mate. En jetant un autre coup d'oeil à votre requête, il apparaît que, avec 'fun. *', Vous étiez en fait en train de regrouper toutes les colonnes non agrégées. Si vous ne l'aviez pas fait, vous remarqueriez probablement que votre résultat serait plus petit que prévu. – bernie