utilisation de COUNT() - SQL/NoSQL - Programmation
Marsh Posté le 16-06-2006 à 10:33:25
sebou77 a raison je pense que si tu mettais distinct count(*)
ca serait mieux
Marsh Posté le 16-06-2006 à 10:44:44
c'est à cause de l'étoile
tu peux faire un count(distinct chp) avec 1 seul champ.
si tu veux en avoir plusieurs tu l'ecris comme suit :
select count(patro) from (select distinct patro,marital,pren1,pren2,datnaiss from individu)
sinon count(*) au niveau perf c'est mal, mieux vaut mettre count(nom_champ)
Marsh Posté le 16-06-2006 à 10:45:55
ReplyMarsh Posté le 16-06-2006 à 10:47:19
Elmoricq a écrit : voire count(1) si la flemme de chercher un nom de champ |
Merci pour l'astuce, connaissais pas
Marsh Posté le 16-06-2006 à 12:23:21
Oui tout à fait, vous avez raison, il faut mettre un nom de champ. Mais c'est bizarre à comprendre quand même car pour moi COUNT() compte le nombre de résultats renvoyés. Quand on met COUNT(*) on lui demande le nombre de lignes renvoyées, chose qui ne sait pas faire dans ma requête et qui pourtant n'a rien d'illogique. COUNT ne sait donc pas compter le nombre de ligne renvoyé dans certain cas
Marsh Posté le 16-06-2006 à 14:08:01
Giz a écrit : Oui tout à fait, vous avez raison, il faut mettre un nom de champ. Mais c'est bizarre à comprendre quand même car pour moi COUNT() compte le nombre de résultats renvoyés. Quand on met COUNT(*) on lui demande le nombre de lignes renvoyées, chose qui ne sait pas faire dans ma requête et qui pourtant n'a rien d'illogique. COUNT ne sait donc pas compter le nombre de ligne renvoyé dans certain cas |
qd tu fais count(*), de memoire, il remonte la ligne entierement pour la compter, donc si tu as 50 champs, il prend plus de place en memoire....ca doit etre un truc du style
Marsh Posté le 16-06-2006 à 09:57:24
J'ai un code SQL qui marche (testé sous mySQLCC)
SELECT DISTINCT t_ebiz_customer.*
FROM `t_ebiz_customer`, t_ebiz_customer_address
WHERE
t_ebiz_customer_address.country LIKE 'Allemagne%' AND t_ebiz_customer.id_bill_address = t_ebiz_customer_address.id_customer_address
OR
t_ebiz_customer.id_ship_address = t_ebiz_customer_address.id_customer_address
En rajoutant le count, ca marche plus
SELECT COUNT(DISTINCT t_ebiz_customer.*)
FROM `t_ebiz_customer`, t_ebiz_customer_address
WHERE
t_ebiz_customer_address.country LIKE 'Allemagne%' AND t_ebiz_customer.id_bill_address = t_ebiz_customer_address.id_customer_address
OR
t_ebiz_customer.id_ship_address = t_ebiz_customer_address.id_customer_address
Comment faire pour compter le nombre de résultats retournés alors ? (2 dans cette requête)