utilisation de COUNT()

utilisation de COUNT() - SQL/NoSQL - Programmation

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)  :??:

Reply

Marsh Posté le 16-06-2006 à 09:57:24   

Reply

Marsh Posté le 16-06-2006 à 10:17:35    

un distinct dans un count c'est possible ça ? :??: :heink:

Reply

Marsh Posté le 16-06-2006 à 10:33:25    

sebou77 a raison je pense que si tu mettais distinct count(*)
 
ca serait mieux

Reply

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)
 
 

Reply

Marsh Posté le 16-06-2006 à 10:45:55    

voire count(1) si la flemme de chercher un nom de champ :o

Reply

Marsh Posté le 16-06-2006 à 10:47:19    

Elmoricq a écrit :

voire count(1) si la flemme de chercher un nom de champ  :o


Merci pour l'astuce, connaissais pas  :jap:

Reply

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 :??:

Reply

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

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed