Compter avec SQL

roud59 Messages postés 99 Date d'inscription jeudi 16 septembre 2004 Statut Membre Dernière intervention 26 juillet 2007 - 19 mars 2005 à 21:36
nouveauenanglai Messages postés 4 Date d'inscription samedi 10 octobre 2009 Statut Membre Dernière intervention 10 juin 2010 - 14 juin 2010 à 09:09
Bonjour (Bonsoir) à vous tous.


J'ai posé une question (par erreur) sur DelphiFR, mais je pense trouver quelqu'un qui pourra m'aider pus faciement ici.

Voici un exemple de ce que je voudrai faire :


Soit la table dont la première colonne est COULEUR et la 2nde LETTRE et qui contient les valeurs suivantes.
rouge A
bleu B
vert A
vert C
bleu C
vert A
rouge C
rouge C
bleu B


Je voudrais avoir comme résultat de la requète, une table contenant une ligne par couleur et une colonne par lettre indiquant le nombre de couples Couleur/Lettre trouvés dans la table :


rouge 1(nombre de A) 0(nombre de B) 2(nombre de C)
bleu 0 2 1
vert 2 0 1

Si il y a des D dans la table, ils ne seront pas comptés (colonnes statiques).

J'ai essayé avec des Count et Group by, mais je ne crois pas être sur le bon chemin. J'utilise Paradox. Si quelqu'un a une idée ...

Merci d'avance

Roud59

5 réponses

Trinita16 Messages postés 199 Date d'inscription lundi 22 juillet 2002 Statut Membre Dernière intervention 14 juin 2006
21 mars 2005 à 17:23
slt,

il faut utiliser UNION ALL

exemple



select 'rouge' as couleur, sum(a) as 'a', sum(b) as 'b'

from matable

where couleur = 'rouge'

group by couleur



UNION ALL


select 'vert' as couleur, sum(a) as 'a', sum(b) as 'b'


from matable


where couleur = 'vert'


group by couleur



....



ainsi de suite




Trinita,

(Nous savons tous lire, alors passons un peu de temps sur les documentations. Pensons aux personnes qui les rédigent )
0
roud59 Messages postés 99 Date d'inscription jeudi 16 septembre 2004 Statut Membre Dernière intervention 26 juillet 2007 2
22 mars 2005 à 09:41
Bonjour Trinita16 et merci pour ta réponse essayée avec une table MaTable :

Couleur | Lettre
--------+-------
rouge | A
bleu | B
vert | A
vert | C
bleu | C
vert | A
rouge | C
rouge | C
bleu | B

et j'ai tapé (pour le rouge)

select "rouge" as LaCouleur, Sum(A) as A, Sum(B) as B
from Matable
where couleur = "rouge"
group by couleur

Et là il me fait une erreur sur les sum() : nom de champ incorrect. J'ai essayé avec Sum(Lettre="A") ou Count(Lettre="A") mais cela ne fonctionne pas non plus. C'est peut être paradox qui n'accepte pas cette syntaxe.

J'avais essayé ceci :

select Couleur, Count(Lettre) as A from MaTable where Lettre = "A" group by couleur

et obtenu :

Couleur | A
--------+---
rouge | 1
vert | 2

C'est presque ce que je veux, mais il faut faire des réunions de colonnes (celle du B puis celle du C) et pas de lignes comme UNION (ALL) le fait.

Est-ce possible de le faire ?

Roud59
0
Trinita16 Messages postés 199 Date d'inscription lundi 22 juillet 2002 Statut Membre Dernière intervention 14 juin 2006
22 mars 2005 à 19:15
Slt,



il faut faire



select "rouge" as LaCouleur, Sum(LETTRE) as A
from Matable
where couleur = "rouge"

and Lettre = "A"
group by couleur



Trinita,

(Nous savons tous lire, alors passons un peu de temps sur les documentations. Pensons aux personnes qui les rédigent )
0
radhia1987 Messages postés 1 Date d'inscription jeudi 29 avril 2010 Statut Membre Dernière intervention 7 mai 2010
7 mai 2010 à 12:19
c'est trop
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
nouveauenanglai Messages postés 4 Date d'inscription samedi 10 octobre 2009 Statut Membre Dernière intervention 10 juin 2010
14 juin 2010 à 09:09
merci de m'accueillir avec bcp de joie
0
Rejoignez-nous