Probleme d'écriture de requete en SQL :

Probleme d'écriture de requete en SQL : - SQL/NoSQL - Programmation

Marsh Posté le 14-09-2002 à 01:09:09    

Dans une table, Les champs suivants :
 
Champ1 champ2 champ3 champ4
0001  AAAAA  J  18
0001  AAAAA  J  19
0001  BBBBB  J  51
0001  CCCCC  B  55
0005  AZAZA  J  44
0008  AQAQA  J  74
0008  QQQQQ  J  11
0008  QQQQQ  J  12
 
Voilà, ma recherche est la suivant savoir combien de fois j'ai l'information "J" dans le champ 3 avec un regroupement sur le champ 1 et 2 ...  
J'ai ddonc écrit la requete suivante :
SQL = "Select Champ1, champ2 from TABLE Where champ3 = 'J  ' group by Champ1, champ2"
 
Et ensuite je fais une requete en boucle pour compter le nombre de ligne de résultat....
Problème : la table fais plus de 20 000 lignes, et donc le traitement est long....
 
J'ai tenté de faire une requete avec COUNT, mais le problème est que le regroupement que je trouve n'est pas bon :
 
SQL = "Select Count(champ4) as COUNTPDC from TABLE Where ((champ3) = 'J  ';) group by Champ1, champ2"
Lorsque l'on regarde les données dans la table, la ligne 1 et 2 est identique et doit compter pour 1 dans le résultat au lieu de 2.  Et de plus cette requete ne me donne pas 1 chiffres mais là aussi une serie de ligne que je dois compter.
 
N'y a t il pas une solution en SQL pour ecrire une ligne et avec 1 chiffre en retour dans un délai court sans passé par un comptage de ligne à ligne ?
 
Merci de votre aide, j'ai l'impression de tricoter...
 


---------------
http://www.arome.org/
Reply

Marsh Posté le 14-09-2002 à 01:09:09   

Reply

Marsh Posté le 14-09-2002 à 01:12:06    

COUNT(DISTINCT Champ4)
 
Par contre, chais pas si MySQL comprend cette bête là :D
 
En tout cas, MSSQL et Oracle le supportent

Reply

Marsh Posté le 16-09-2002 à 09:31:07    

Select champ1, champ2,count(distinct champ3) from table
group by champ1, champ2


Message édité par irulan le 16-09-2002 à 09:31:48
Reply

Sujets relatifs:

Leave a Replay

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