On Monday 24 September 2007 12:20:09 Jean Michel Missègue-Delmas wrote:

Bonjour,

> J'ai une base de données MySql que j'utilise via OOo. je souhaite faire
> une requête afin de regrouper des noms de villes et de les compter à
> l'aide du code postal. ur le champ "Ville" j'utilise la fonction
> "regroupe" et sur le champ "cp" la fonction "somme". Or à chaque fois
> OOo plante. Où je fais une erreur svp?
>
> Je précise que je travaille en graphique via le mode ébauche de requête.

Il vaut mieux travailler directement en SQL, pour deux raisons, même si c'est 
plus difficile au début :
(a) le module graphique d'ébauche de requêtes fait parfois des bizarreries 
avec la commande SQL et surtout ne supporte pas toutes les instructions SQL
(b) en passant par le mode graphique, ta requête est automatiquement soumise à 
l'interpréteur de langage SQL interne à OOo, qui comporte des lacunes assez 
gênantes (gestion des dates, paramètres nommés, variables, etc).

Pour compter avec Mysql, on utilise l'instruction COUNT et non SUM.

SELECT COUNT(DISTINCT cp), Ville from MaTable GROUP BY cp,Ville


Il faut toutefois faire attention avec l'utilisation de COUNT sous mysql parce 
que cette fonction ne s'appuie pas sur les indexes éventuels de chaque table, 
ce qui fait que le serveur effectue un balayage complet de toutes les données 
de la table (ou des tables) concernée(s) par la requête. Ceci peut avoir un 
impact considérable sur les performances. Il est donc conseillé d'opérer la 
fonction COUNT sur un SELECT FROM (donc sur une requête auxiliaire).

Pour plus d'infos, voir ici :

http://poeticcode.wordpress.com/2007/03/26/mysql-count-distinct-vs-distinct-and-count/

http://www.nexen.net/actualites/trucs/16760-count_distinct_contre_distinct_et_count.php


Alex

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Répondre à