Bonsoir,

voilà quelques temps que j'essaie sans succès d'optimiser une de mes requêtes mysql.

Voilà ce que je fais:

A des fins statistiques, je calcule la taille totale des entrées d'un champ d'une table en octet.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
SELECT sum(length(champ)) taille FROM `matable`
jusque là rien de compliqué, j'ai bien la taille qu'il me faut.

sauf que, j'ai besoin de calculer le total des entrées mais sans les entrées en doublon, du coup je fais:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
SELECT sum(length(champ))/count(champ) taille FROM `matable` GROUP BY champ
ce qui fonctionne, le "problème" c'est que forcément, ça me retourne la liste des tailles de chaque entrée que je dois donc récupérer pour additionner.

Je voulais savoir s'il y avait moyen de tout compter en une seule fois ? Donc d'additionner tous les nombres retournés.

J'ai déjà suivit quelques pistes, comme par exemple:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
SELECT distinct champ FROM `matable`
est équivalent à

Code : Sélectionner tout - Visualiser dans une fenêtre à part
SELECT champ FROM `matable` GROUP BY champ
et me renvoie la liste des entrées sans les doublons.

et

Code : Sélectionner tout - Visualiser dans une fenêtre à part
SELECT count(distinct champ) nb FROM `matable`
me renvoie bien le nombre total (seul) d'entrées sans les doublons,

mais par contre ceci:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
SELECT sum(length(distinct champ)) taille FROM `matable`
ne fonctionne pas.
Mysql me renvoi une erreur de syntaxe:

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'distinct champ)) taille FROM `matable` at line 1
Merci d'avance pour votre aide!