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.
jusque là rien de compliqué, j'ai bien la taille qu'il me faut.
Code : Sélectionner tout - Visualiser dans une fenêtre à part SELECT sum(length(champ)) taille FROM `matable`
sauf que, j'ai besoin de calculer le total des entrées mais sans les entrées en doublon, du coup je fais:
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.
Code : Sélectionner tout - Visualiser dans une fenêtre à part SELECT sum(length(champ))/count(champ) taille FROM `matable` GROUP BY champ
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:
est équivalent à
Code : Sélectionner tout - Visualiser dans une fenêtre à part SELECT distinct champ FROM `matable`
et me renvoie la liste des entrées sans les doublons.
Code : Sélectionner tout - Visualiser dans une fenêtre à part SELECT champ FROM `matable` GROUP BY champ
et
me renvoie bien le nombre total (seul) d'entrées sans les doublons,
Code : Sélectionner tout - Visualiser dans une fenêtre à part SELECT count(distinct champ) nb FROM `matable`
mais par contre ceci:
ne fonctionne pas.
Code : Sélectionner tout - Visualiser dans une fenêtre à part SELECT sum(length(distinct champ)) taille FROM `matable`
Mysql me renvoi une erreur de syntaxe:
Merci d'avance pour votre aide!#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
Partager